Commit 2073853e87f9d5d8d39f204bc9293da1a8782b07

Authored by 梁灏
1 parent ab3ff750

fixed #3038

examples/routers/carousel.vue
1 <template> 1 <template>
2 <div> 2 <div>
3 - <Carousel v-model="v1" dots="inside" trigger="hover" autoplay loop radius-dot easing="fade"> 3 + <Carousel v-model="v1" dots="outside" @on-change="hc" :autoplay="false">
4 <Carousel-item> 4 <Carousel-item>
5 - <div class="demo-carousel">1</div> 5 + <div class="demo-case-img">
  6 + <img src="https://file.iviewui.com/dist/84b3cded4163febf9dae090e76129322.png">
  7 + </div>
6 </Carousel-item> 8 </Carousel-item>
7 <Carousel-item> 9 <Carousel-item>
8 - <div class="demo-carousel">2</div> 10 + <div class="demo-case-img">
  11 + <img src="https://file.iviewui.com/dist/84b3cded4163febf9dae090e76129322.png">
  12 + </div>
9 </Carousel-item> 13 </Carousel-item>
10 <Carousel-item> 14 <Carousel-item>
11 - <div class="demo-carousel">3</div>  
12 - </Carousel-item>  
13 - <Carousel-item>  
14 - <div class="demo-carousel">4</div> 15 + <div class="demo-case-img">
  16 + <img src="https://file.iviewui.com/dist/84b3cded4163febf9dae090e76129322.png">
  17 + </div>
15 </Carousel-item> 18 </Carousel-item>
16 </Carousel> 19 </Carousel>
17 - {{ v1 }}  
18 - <div @click="v1 = 0">change v1</div> 20 + <Button @click="v1 = 2">change</Button>
19 </div> 21 </div>
20 </template> 22 </template>
21 <script> 23 <script>
@@ -23,25 +25,20 @@ @@ -23,25 +25,20 @@
23 data () { 25 data () {
24 return { 26 return {
25 v1: 0 27 v1: 0
26 - }; 28 + }
27 }, 29 },
28 methods: { 30 methods: {
29 - push () {  
30 - this.pushItem.push('test');  
31 - },  
32 - slideChange (from, to) {  
33 - this.log.push(`From ${from} To ${to}`); 31 + hc (...args) {
  32 + console.log(args);
34 } 33 }
35 } 34 }
36 } 35 }
37 </script> 36 </script>
38 -<style>  
39 - .demo-carousel{  
40 - height: 200px;  
41 - line-height: 200px;  
42 - text-align: center;  
43 - color: #fff;  
44 - font-size: 20px;  
45 - background: #506b9e; 37 +<style lang="less">
  38 + .demo-case-img {
  39 + img{
  40 + width: 500px;
  41 + }
46 } 42 }
47 -</style>  
48 \ No newline at end of file 43 \ No newline at end of file
  44 +</style>
  45 +
src/components/carousel/carousel.vue
@@ -243,8 +243,8 @@ @@ -243,8 +243,8 @@
243 this.updateTrackPos(this.hideTrackPos); 243 this.updateTrackPos(this.hideTrackPos);
244 } 244 }
245 // 获取当前展示图片的索引值 245 // 获取当前展示图片的索引值
246 - let index = this.showCopyTrack ? this.copyTrackIndex : this.trackIndex;  
247 - index += offset; 246 + const oldIndex = this.showCopyTrack ? this.copyTrackIndex : this.trackIndex;
  247 + let index = oldIndex + offset;
248 while (index < 0) index += slidesLen; 248 while (index < 0) index += slidesLen;
249 if (((offset > 0 && index === slidesLen) || (offset < 0 && index === slidesLen - 1)) && this.loop) { 249 if (((offset > 0 && index === slidesLen) || (offset < 0 && index === slidesLen - 1)) && this.loop) {
250 // 极限值(左滑:当前索引为总图片张数, 右滑:当前索引为总图片张数 - 1)切换轨道 250 // 极限值(左滑:当前索引为总图片张数, 右滑:当前索引为总图片张数 - 1)切换轨道
@@ -255,7 +255,9 @@ @@ -255,7 +255,9 @@
255 if (!this.loop) index = index % this.slides.length; 255 if (!this.loop) index = index % this.slides.length;
256 this.updateTrackIndex(index); 256 this.updateTrackIndex(index);
257 } 257 }
258 - this.$emit('input', index === this.slides.length ? 0 : index); 258 + this.currentIndex = index === this.slides.length ? 0 : index;
  259 + this.$emit('on-change', oldIndex, this.currentIndex);
  260 + this.$emit('input', this.currentIndex);
259 }, 261 },
260 arrowEvent (offset) { 262 arrowEvent (offset) {
261 this.setAutoplay(); 263 this.setAutoplay();
@@ -294,9 +296,6 @@ @@ -294,9 +296,6 @@
294 autoplaySpeed () { 296 autoplaySpeed () {
295 this.setAutoplay(); 297 this.setAutoplay();
296 }, 298 },
297 - currentIndex (val, oldVal) {  
298 - this.$emit('on-change', oldVal, val);  
299 - },  
300 trackIndex () { 299 trackIndex () {
301 this.updateOffset(); 300 this.updateOffset();
302 }, 301 },