vue2中引用 better-scroll的方法
阿新 • • 發佈:2018-11-19
使用時有三個要點:
一:html部分
<div class="example" ref="divScroll"> <div> <p>內容1</p> <p>內容2</p> <ul> <li>list1</li> <li>list2</li> <ul> </div> </div>
1.最外層加ref,讓better-scroll通過ref來獲取整個div;
2.緊跟一個div,不用加任何樣式或class, 最終可以滑動的部分就是這個div,這個div必須是 加了ref 的div 的 直接子元素。 在這個div裡面就可以放置希望滑動的內容了。
二: css部分
.example width: 100% position: absolute top: 174px bottom: 48px left: 0 overflow: hidden
- 這裡只是舉例,並不是一定要這樣寫。
- 首先將 獲取到的加了 ref 的div 的 高度固定, 可以設定定位, 也可以設定 height, max-height...
- 加 overflow: hidden 。
- 三: js 部分
- 首先 引入 better-scroll:
import BScroll from 'better-scroll';
1: 使用 mounted() 函式
mounted() { this.scroll = new BScroll(this.$refs.divScroll, { click: true, }); },
2.使用 created() 函式
created() { this.$nextTick(() => { this.scroll = new BScroll(this.$refs.divScroll, { click: true, }); }); },
1.使用created 函式 要非同步執行(此時html 尚未渲染完成)。
- mounted函式 無需非同步執行(mounted 函式在html渲染完成後觸發)。
下面看下Vue中引入better-scroll的方法
1.用npm 安裝好 better-scroll
npm install--save better-scroll
2.在需要的頁面引入
import BScroll from 'better-scroll'
3.在data中定義 better-scroll的引數
options: { pullDownRefresh: { threshold: 50, // 當下拉到超過頂部 50px 時,觸發 pullingDown 事件 stop: 20 // 重新整理資料的過程中,回彈停留在距離頂部還有 20px 的位置 }, pullUpLoad: { threshold: -20 // 在上拉到超過底部 20px 時,觸發 pullingUp 事件 }, // pullDownRefresh: false, //關閉下拉 // pullUpLoad: false, // 關閉上拉 click: true, probeType: 3, startY: 0,//歡迎加入全棧開發交流圈一起學習交流:864305860 scrollbar: true//面向1-3年前端人員 }//幫助突破技術瓶頸,提升思維能力
4.在template中寫入
<div class="wrapper" ref="wrapper" :scrollbar="options.scrollbar" :startY="options.startY">
5.在methods中寫入方法,我自定義的
load() { if (!this.scroll) { this.scroll = new BScroll(this.$refs.wrapper, this.options); // 上拉 this.scroll.on('pullingUp', () => { // 重新整理資料的過程中,回彈停留在距離頂部還有20px的位置 this.setData(); }) } else {//歡迎加入全棧開發交流圈一起學習交流:864305860 this.scroll.refresh()//面向1-3年前端人員 }//幫助突破技術瓶頸,提升思維能力 }, setData() { this.$nextTick(() => { let arr = [1, 2, 3, 'james']; this.data = this.data.concat(arr)// 新增資料 this.scroll.finishPullUp(); this.pullingDownUp() }) }, pullingDownUp() { this.scroll.refresh() //重新計算元素高度 },
6.在created中載入
this.$nextTick(() => { this.load() this.setData() })
結語
感謝您的觀看,如有不足之處,歡迎批評指正。