@@ -64,6 +64,10 @@ export default {
6464 type: Number ,
6565 default: 1
6666 },
67+ newCurrentPage: {
68+ type: Number ,
69+ default: 1
70+ },
6771 lazyLoad: {
6872 type: Boolean ,
6973 default: false
@@ -82,12 +86,22 @@ export default {
8286 watch: {
8387 swiperData (newValue , oldValue ) {
8488 this .updateEvent ();
89+ },
90+ newCurrentPage (newPage ) {
91+ let modTempNum = newPage % this .slideEls .length ;
92+ newPage = modTempNum == 0 ? this .slideEls .length : modTempNum < 0 ? this .slideEls .length + modTempNum : modTempNum;
93+
94+ if (newPage >= this .currentPage ) {
95+ this .next (newPage - this .currentPage );
96+ } else {
97+ this .prev (this .currentPage - newPage);
98+ }
8599 }
86100 },
87101 data () {
88102 return {
89103 dragging: false ,
90- currentPage: this .initPage ,
104+ currentPage: this .initPage || this . newCurrentPage ,
91105 lastPage: 1 ,
92106 translateX: 0 ,
93107 translateY: 0 ,
@@ -108,28 +122,28 @@ export default {
108122 },
109123 methods: {
110124 // 下一张
111- next () {
125+ next (turnPageCount = 1 ) {
112126 let page = this .currentPage ;
113- if (page < this .slideEls .length || this .isLoop ) {
114- this .setPage (page + 1 , true , ' NEXT' );
127+ if (page + turnPageCount < this .slideEls .length || this .isLoop ) {
128+ this .setPage (page + turnPageCount , true , ' NEXT' );
115129 } else {
116130 this ._revert ();
117131 }
118132 },
119133 // 上一张
120- prev () {
134+ prev (turnPageCount = 1 ) {
121135 let page = this .currentPage ;
122- if (page > 1 || this .isLoop ) {
123- this .setPage (page - 1 , true , ' PREV' );
136+ if (page - turnPageCount > 1 || this .isLoop ) {
137+ this .setPage (page - turnPageCount , true , ' PREV' );
124138 } else {
125139 this ._revert ();
126140 }
127141 },
128142 setPage (page , isHasAnimation , type ) {
129143 if (page === 0 ) {
130144 this .currentPage = this .slideEls .length ;
131- } else if (page === this .slideEls .length + 1 ) {
132- this .currentPage = 1 ;
145+ } else if (page > this .slideEls .length ) {
146+ this .currentPage = page - this . slideEls . length ;
133147 } else {
134148 this .currentPage = page;
135149 }
0 commit comments