vue2.0中goods選購欄滾動演算法的實現代碼,vue2.0goods

來源:互聯網
上載者:User

vue2.0中goods選購欄滾動演算法的實現代碼,vue2.0goods

不多說,直接代碼,以便以後重複利用:

<script type="text/ecmascript-6">import BScroll from 'better-scroll';const ERR_OK = 0;export default { props: {  sell: {   type: Object  } }, data() {  return {   goods: [],   listHeight: [],   scrollY: 0  }; }, computed: {  currentIndex() {   for (let i = 0; i < this.listHeight.length; i++) {    let height1 = this.listHeight[i];    let height2 = this.listHeight[i + 1];    if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) {     return i;    };   }   return 0;  } }, created() {  this.classMap = ['decrease', 'discount', 'special', 'invoice', 'guarantee'];  this.$http.get('/api/goods').then((response) => {   response = response.body;   if (response.errno === ERR_OK) {    this.goods = response.data;    this.$nextTick(() => {     this._initScroll();     this._calculateHeight();    });   }  }); }, methods: {  _initScroll() {   this.menuScroll = new BScroll(this.$refs.menuwrapper, {    click: true   });   this.foodScroll = new BScroll(this.$refs.foodswrapper, {    probeType: 3   });   this.foodScroll.on('scroll', (pos) => {    this.scrollY = Math.abs(Math.round(pos.y));   });  },  _calculateHeight() {   let foodList = this.$refs.foodswrapper.getElementsByClassName('food-list-hook');   let height = 0;   this.listHeight.push(height);   for (let i = 0; i < foodList.length; i++) {    let item = foodList[i];    height += item.clientHeight;    this.listHeight.push(height);   }  },  selectMenu(index, event) {   if (!event._constructed) {    return;   };   console.log(index);   let foodList = this.$refs.foodswrapper.getElementsByClassName('food-list-hook');   let el = foodList[index];   this.foodScroll.scrollToElement(el, 300);  } }};</script>

以上所述是小編給大家介紹的vue2.0中goods選購欄滾動演算法的實現代碼,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對幫客之家網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.