最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue-better-scroll 的使用實(shí)例代碼詳解

 更新時(shí)間:2018年12月03日 15:15:07   作者:望天一方  
這篇文章主要介紹了vue-better-scroll 的使用實(shí)例代碼詳解,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

首先安裝better-scroll

npm i better-scroll -S

goods頁(yè)面模板

<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" alt="" width="57" height="57">
       </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>好評(píng)率{{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注冊(cè)

在鉤子函數(shù) create中 用vue-resource 請(qǐng)求數(shù)據(jù),并異步調(diào)用方法

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

   注冊(cè)方法

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

better-scroll用法

我們先來(lái)看一下 better-scroll 常見的 html 結(jié)構(gòu):

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

當(dāng) content 的高度不超過(guò)父容器的高度,是不能滾動(dòng)的,而它一旦超過(guò)了父容器的高度,我們就可以滾動(dòng)內(nèi)容區(qū)了,這就是 better-scroll 的滾動(dòng)原理。

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

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

better-scroll 的初始化時(shí)機(jī)很重要,因?yàn)樗诔跏蓟臅r(shí)候,會(huì)計(jì)算父元素和子元素的高度和寬度,來(lái)決定是否可以縱向和橫向滾動(dòng)。因此,我們?cè)诔跏蓟臅r(shí)候,必須確保父元素和子元素的內(nèi)容已經(jīng)正確渲染了。如果沒有辦法滑動(dòng),那就是初始化的時(shí)機(jī)不對(duì)。

餓了么是這樣處理的:

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

this.$nextTick()這個(gè)方法作用是當(dāng)數(shù)據(jù)被修改后使用這個(gè)方法會(huì)回調(diào)獲取更新后的dom再render出來(lái)
如果不在下面的this.$nextTick()方法里回調(diào)這個(gè)方法,數(shù)據(jù)改變后再來(lái)計(jì)算滾動(dòng)軸就會(huì)出錯(cuò)

上拉刷新功能

<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() {
   // 設(shè)置wrapper的高度
   this.$refs.wrapper.style.height = document.getElementById("app").offsetHeight - document.getElementById("scroll").offsetTop + "px";
   // better-scroll 的content高度不大于wrapper高度就不能滾動(dòng),這里的問(wèn)題是,當(dāng)一頁(yè)數(shù)據(jù)的高度不夠srapper的高度的時(shí)候,即使存在n頁(yè)也不能下拉
   // 需要設(shè)置content的min-height大于wrapper高度
   this.$refs.content.style.minHeight = this.$refs.wrapper.offsetHeight + 1 + "px";
   this._initScroll();
   this.getIncomeDetail(this.nextPage);
   // 設(shè)置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的時(shí)候加載
     },
     mouseWheel: {  // pc端同樣能滑動(dòng)
      speed: 20,
      invert: false
     },
     useTransition:false, // 防止iphone微信滑動(dòng)卡頓
    });
    // 上拉加載數(shù)據(jù)
    this.orderScroll.on('pullingUp',()=>{
     this.scrollFinish = false;
     // 防止一次上拉觸發(fā)兩次事件,不要在ajax的請(qǐng)求數(shù)據(jù)完成事件中調(diào)用下面的finish方法,否則有可能一次上拉觸發(fā)兩次上拉事件
     this.orderScroll.finishPullUp();
     // 加載數(shù)據(jù)
     this.getIncomeDetail(this.nextPage);
    });
   }

總結(jié)

以上所述是小編給大家介紹的vue-better-scroll 的使用實(shí)例代碼詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue組件中重新渲染的3種方式小結(jié)

    vue組件中重新渲染的3種方式小結(jié)

    本文主要介紹了vue組件中重新渲染的3種方式小結(jié),主要包括改變key,v-if,vm.$forceUpdate()這三種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 詳解vue中v-model和v-bind綁定數(shù)據(jù)的異同

    詳解vue中v-model和v-bind綁定數(shù)據(jù)的異同

    這篇文章主要介紹了vue中v-model和v-bind綁定數(shù)據(jù)的異同,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • vue?結(jié)合webpack的初級(jí)使用指南小白學(xué)習(xí)篇

    vue?結(jié)合webpack的初級(jí)使用指南小白學(xué)習(xí)篇

    這篇文章主要為大家介紹了vue?結(jié)合webpack的初級(jí)使用指南非常適合入門webpack的小白學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • vue2.0 和 animate.css的結(jié)合使用

    vue2.0 和 animate.css的結(jié)合使用

    animate.css是一款前端動(dòng)畫庫(kù),相似的有velocity-animate。這篇文章給大家介紹vue2.0 和 animate.css的結(jié)合使用,需要的朋友參考下吧
    2017-12-12
  • Vue實(shí)現(xiàn)下拉表格組件

    Vue實(shí)現(xiàn)下拉表格組件

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)下拉表格組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Element中table組件(el-table)右側(cè)滾動(dòng)條空白占位處理

    Element中table組件(el-table)右側(cè)滾動(dòng)條空白占位處理

    當(dāng)我設(shè)置了max-height,就會(huì)在表格右側(cè)出現(xiàn)一列空白的占位,本文主要介紹了Element中table組件(el-table)右側(cè)滾動(dòng)條空白占位處理,感興趣的可以了解一下
    2023-09-09
  • vue-router單頁(yè)面路由

    vue-router單頁(yè)面路由

    這篇文章主要為大家詳細(xì)介紹了vue-router單頁(yè)面路由的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Vue 指令實(shí)現(xiàn)按鈕級(jí)別權(quán)限管理功能

    Vue 指令實(shí)現(xiàn)按鈕級(jí)別權(quán)限管理功能

    這篇文章主要介紹了Vue 指令實(shí)現(xiàn)按鈕級(jí)別權(quán)限管理功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Vue 進(jìn)階之路(三)

    Vue 進(jìn)階之路(三)

    這篇文章主要介紹了Vue 進(jìn)階之路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解在vue-test-utils中mock全局對(duì)象

    詳解在vue-test-utils中mock全局對(duì)象

    這篇文章主要介紹了詳解在vue-test-utils中mock全局對(duì)象,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11

最新評(píng)論

甘洛县| 淮阳县| 宁蒗| 渭源县| 兰溪市| 元江| 德州市| 巴林左旗| 民县| 曲靖市| 东兰县| 安岳县| 苗栗县| 辛集市| 友谊县| 利辛县| 青州市| 大城县| 汾西县| 介休市| 四会市| 罗甸县| 古蔺县| 望谟县| 岳池县| 秭归县| 南昌县| 兰西县| 蒲江县| 河北区| 贡觉县| 巴塘县| 天津市| 商城县| 铜川市| 太原市| 肃南| 肇源县| 饶平县| 辉南县| 桂东县|