亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

vue-better-scroll 的使用實例代碼詳解

2024-05-06 16:47:16
字體:
來源:轉載
供稿:網友

首先安裝better-scroll

npm i better-scroll -S

goods頁面模板

<template> <div class="goods">  <div class="menu-wrapper" ref="menuWrapper">   <ul>    <li v-for="item in goods" class="menu-item">     <span class="text border-1px">      <span v-show="item.type>0" class="icon" :class="classMap[item.type]"></span>{{item.name}}     </span>    </li>   </ul>  </div>  <div class="foods-wrapper" ref="foodsWrapper">   <ul>    <li v-for="item in goods" >     <h1 class="title">{{item.name}}</h1>     <ul>      <li v-for="food in item.foods" class="food-item border-1px">       <div class="icon">        <img :src="food.icon"       </div>       <div class="content">        <h2 class="name">{{food.name}}</h2>        <p class="desc">{{food.description}}</p>        <div class="extra">         <span class="food-number">月售{{food.sellCount}}份</span>         <span>好評率{{food.rating}}%</span>        </div>        <div class="price">         <span class="nowPrice">¥{{food.price}}</span>         <span class="oldPrice">¥{{food.oldPrice}}</span>        </div>       </div>      </li>     </ul>    </li>   </ul>  </div> </div></template>

js

<script type="text/ecmascript-6"> /* eslint-disable*/  import BScroll from 'better-scroll'export default{  props:{    seller:{      type:Object    }  }, data(){    return{      goods:[]    } }, created(){    this.classMap=['decrease', 'discount', 'special', 'invoice', 'guarantee']    this.$http.get('/api/goods').then((res)=>{      this.goods=res.data.data;      this.$nextTick(()=>{       this._initScroll();      })     console.log(this.$refs.menuWrapper)    }) }, methods:{   _initScroll(){     this.meunScroll=new BScroll(this.$refs.menuWrapper,{});     this.foodsScroll=new BScroll(this.$refs.foodsWrapper,{});  } }}</script>

先用ref 綁定事件, 在vue中 用$ .refs注冊

在鉤子函數 create中 用vue-resource 請求數據,并異步調用方法

this.$nextTick(()=>{       this._initScroll();      }

   注冊方法

_initScroll(){     this.meunScroll=new BScroll(this.$refs.menuWrapper,{});     this.foodsScroll=new BScroll(this.$refs.foodsWrapper,{});  }

better-scroll用法

我們先來看一下 better-scroll 常見的 html 結構:

<div class="wrapper"> <ul class="content">    <li></li>   <li></li>    <li></li>   <li></li>  </ul></div>

當 content 的高度不超過父容器的高度,是不能滾動的,而它一旦超過了父容器的高度,我們就可以滾動內容區了,這就是 better-scroll 的滾動原理。

 import BScroll from 'better-scroll' let wrapper = document.querySelector('.wrapper') let scroll = new BScroll(wrapper, {})

better-scroll 對外暴露了一個 BScroll 的類,我們初始化只需要 new 一個類的實例即可。第一個參數就是我們 wrapper 的 DOM 對象,第二個是一些配置參數。 

better-scroll 的初始化時機很重要,因為它在初始化的時候,會計算父元素和子元素的高度和寬度,來決定是否可以縱向和橫向滾動。因此,我們在初始化它的時候,必須確保父元素和子元素的內容已經正確渲染了。如果沒有辦法滑動,那就是初始化的時機不對。 

餓了么是這樣處理的:

mounted() {  this.$nextTick(() => {  this.scroll = new Bscroll(this.$refs.wrapper, {}) })   }

this.$nextTick()這個方法作用是當數據被修改后使用這個方法會回調獲取更新后的dom再render出來 
如果不在下面的this.$nextTick()方法里回調這個方法,數據改變后再來計算滾動軸就會出錯

上拉刷新功能

<div class="wrapper" ref="wrapper">    <ul class="content" ref="content">     <li v-for="(item,key) in detail" :key="key" v-if="detail.length > 0">      <Row type="flex" justify="start" align="middle">       <Col :span="8" class="detail-item">       <span :class="{'color-red':item.is_delay === 1}">{{item.order_sn}}</span>       </Col>       <Col :span="8" class="detail-item">       <span>{{item.date}}</span>       </Col>       <Col :span="8" class="detail-item">       <span>¥ {{item.partner_profit | number2}}</span>       </Col>      </Row>     </li>     <li v-if="!scrollFinish">      <Row type="flex" justify="center" align="middle">       <Col :span="6" v-if="loadingText">       <p>{{loadingText}}</p>       </Col>       <Col :span="2" v-else>        <Spin size="large"></Spin>       </Col>      </Row>     </li>    </ul>   </div>   mounted() {   // 設置wrapper的高度   this.$refs.wrapper.style.height = document.getElementById("app").offsetHeight - document.getElementById("scroll").offsetTop + "px";   // better-scroll 的content高度不大于wrapper高度就不能滾動,這里的問題是,當一頁數據的高度不夠srapper的高度的時候,即使存在n頁也不能下拉   // 需要設置content的min-height大于wrapper高度   this.$refs.content.style.minHeight = this.$refs.wrapper.offsetHeight + 1 + "px";   this._initScroll();   this.getIncomeDetail(this.nextPage);   // 設置scroll的高度   // this.scrollHeight = document.getElementById("app").offsetHeight - document.getElementById("scroll").offsetTop ;  },  methods:{  _initScroll() {    this.orderScroll = new BScroll(this.$refs.wrapper, {     probeType: 3,       click:true,     pullUpLoad: {  // 配置上啦加載      threshold: -80  //上拉80px的時候加載     },     mouseWheel: {  // pc端同樣能滑動      speed: 20,      invert: false     },     useTransition:false, // 防止iphone微信滑動卡頓    });    // 上拉加載數據    this.orderScroll.on('pullingUp',()=>{     this.scrollFinish = false;     // 防止一次上拉觸發兩次事件,不要在ajax的請求數據完成事件中調用下面的finish方法,否則有可能一次上拉觸發兩次上拉事件     this.orderScroll.finishPullUp();     // 加載數據     this.getIncomeDetail(this.nextPage);    });   }

總結

以上所述是小編給大家介紹的vue-better-scroll 的使用實例代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美专区在线观看| 国产精品久久久久久久久久久不卡| 91精品啪aⅴ在线观看国产| 日韩电影在线观看永久视频免费网站| 九九热在线精品视频| 91免费视频网站| 一本色道久久88综合亚洲精品ⅰ| 欧美成人精品一区二区三区| 中文字幕日韩免费视频| 欧美中文字幕精品| 亚洲加勒比久久88色综合| 尤物99国产成人精品视频| 欧美日韩亚洲国产一区| 久久色免费在线视频| 欧美激情国产高清| 91啪国产在线| 国产一区二区三区在线播放免费观看| 亚洲欧美日韩爽爽影院| 国产成人精品网站| 亚洲级视频在线观看免费1级| 91久久精品美女| 91在线视频精品| 萌白酱国产一区二区| 97精品一区二区视频在线观看| 狠狠躁夜夜躁人人爽天天天天97| 欧日韩在线观看| 久久久久久亚洲精品中文字幕| 国产精品网站入口| 久久91亚洲精品中文字幕| 日韩av电影免费观看高清| 欧美不卡视频一区发布| 亚洲国产另类 国产精品国产免费| 国产精品天天狠天天看| 国产91色在线|| 日韩欧美成人网| 色悠久久久久综合先锋影音下载| 久久亚洲精品网站| 欧美孕妇孕交黑巨大网站| 亚洲视频自拍偷拍| 亚洲成人精品av| 亚洲精品免费一区二区三区| 久久亚洲精品网站| 精品国产一区二区三区四区在线观看| 久久久久久久久久久久久久久久久久av| 日韩av影视在线| 国产精品高潮呻吟久久av野狼| 亚洲福利影片在线| 成人黄色短视频在线观看| 国产综合久久久久久| 国产精品青青在线观看爽香蕉| 欧美一级电影在线| 久久99视频免费| 欧洲午夜精品久久久| 韩国三级电影久久久久久| 亚洲精品99999| 国产女同一区二区| 精品视频在线播放色网色视频| 日韩va亚洲va欧洲va国产| 成人免费自拍视频| 日韩免费观看视频| 亚洲第一天堂无码专区| 日韩中文字幕免费| 国产女精品视频网站免费| 国产精品免费视频久久久| 日韩成人网免费视频| 欧美日韩亚洲激情| 欧美性猛交99久久久久99按摩| 国产91成人在在线播放| 欧美午夜丰满在线18影院| 欧美久久精品一级黑人c片| 69久久夜色精品国产69乱青草| 欧美日韩国产成人在线| 欧美性生交大片免费| 日本三级久久久| 亚洲电影免费在线观看| 午夜伦理精品一区| 国产原创欧美精品| 上原亚衣av一区二区三区| 国产亚洲欧美日韩精品| 国产精品综合网站| 精品久久久久久| 日韩av123| 91伊人影院在线播放| 亚洲人成在线免费观看| 国产精品狼人色视频一区| 欧美精品aaa| 日韩女优在线播放| 国产精品爱久久久久久久| 欧美成人剧情片在线观看| 日韩av在线免费播放| 亚洲福利视频专区| 两个人的视频www国产精品| 久久亚洲国产精品成人av秋霞| 亚洲欧美在线x视频| 久久精彩免费视频| 国产亚洲在线播放| 国产成人精品av| 精品五月天久久| 欧美一区第一页| 日韩精品999| 欧美亚洲另类制服自拍| 国产精品一区二区三区免费视频| 欧美中文在线字幕| 国产日韩欧美电影在线观看| 亚洲国产精久久久久久久| 国产日本欧美一区二区三区在线| 福利一区福利二区微拍刺激| 国产精品福利观看| 超薄丝袜一区二区| 成人激情春色网| 国产成人avxxxxx在线看| 97免费视频在线播放| 国产精品一区二区久久久| 日本国产欧美一区二区三区| 国产精品丝袜久久久久久不卡| 在线播放日韩专区| 不卡中文字幕av| 国产精品一区二区三区在线播放| 欧美午夜女人视频在线| 精品久久久久久久久久久久| 欧美小视频在线| 91免费看视频.| 亚洲人高潮女人毛茸茸| 日韩在线一区二区三区免费视频| 久久久伊人日本| www欧美xxxx| 欧洲美女7788成人免费视频| 久久亚洲精品成人| 亚洲精品电影在线| 麻豆一区二区在线观看| 91免费精品视频| 国产91色在线| 精品高清一区二区三区| 日本一本a高清免费不卡| 欧美专区中文字幕| 亚洲精品98久久久久久中文字幕| 精品久久久视频| 国产亚洲福利一区| 国内精久久久久久久久久人| 国产日韩在线看片| 欧洲精品久久久| 欧美另类精品xxxx孕妇| 日韩欧美亚洲一二三区| 亚洲午夜av久久乱码| 日韩av影片在线观看| 91精品久久久久久| 国产视频久久久久| 亚洲国产精品久久精品怡红院| 在线观看不卡av| 亚洲 日韩 国产第一| 亚洲成人久久网| 色悠悠国产精品| 川上优av一区二区线观看| 成人激情视频在线播放| 亚洲性生活视频| 欧美—级高清免费播放| 久久久久久网址| 88国产精品欧美一区二区三区| 亚洲美女自拍视频| 亚洲黄页网在线观看| 欧美日韩亚洲精品一区二区三区| 人九九综合九九宗合| 欧美伊久线香蕉线新在线| 亚洲欧洲在线视频|