vue结合 better-scroll 下拉加载问题

Posted hxp87

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue结合 better-scroll 下拉加载问题相关的知识,希望对你有一定的参考价值。

源码:https://github.com/LY-u/vue_better-scroll
封装scroll.vue组件, 在组件内加载:
import BScroll from better-scroll
组件内容:参考:https://github.com/LY-u/vue_better-scroll/blob/master/src/components/page.vue

封装好的scroll.vue在项目中使用:
import BScroll from better-scroll
import scroll from @/components/scroll

注意事项:先引入better-scroll 组件 在引入scroll,期中BScroll组件不要再模板里调用

components:{scroll}

APP.vue使用 scroll组件

<scroll class="wrap"
          ref=scrollEle
          :pulldown="true"
          :listenScroll=true
          :pullDownRefresh="pullDownRefreshObj"
          @pulldown="loadData"
          @scroll=scroll></scroll>


<script>
export default{
computed:{
        pullDownRefreshObj(){
        // 下拉刷新配置
        return {
            threshold: 60,
            stop: 50,
            stopTime:1000
        }
      },
    },

//这里具体参数配置  参考官方文档 http://ustbhuangyi.github.io/better-scroll/doc/zh-hans/api-specific.html  具体我也不太明白,我也是参考这里一步一步写的,

methods:{
 loadData(){
         setTimeout(()=>{
          this.finishPullDown().then(res=>{
            console.log(refresh)
            })
          },1000)
        },
    scroll(pos){
      //监听滚动
        let y = -pos.y
        // alert(y)
        },
    scrollTo(y) {
      return new Promise((resolve)=>{
        this.$refs.scrollEle.scrollTo(0, -y, 500, bounce)
        resolve()
      })
    },
    scrollToElement(){
      let el = document.querySelector(.to)
      this.$refs.scrollEle.scrollToElement(el,700)
    },
    finishPullDown() {
      return this.$refs.scrollEle.finishPullDown()
    },
    initScroll() {
      let s = this.$refs.scrollEle.scroll
      if(s){
        return this.refreshScroll()
      }else{
        return this.$refs.scrollEle._initScroll()
      }
    },
    refreshScroll() {
      return this.$refs.scrollEle.refresh()
    },
    },
},
mounted() {
       //初始化滚动条 
      this.initScroll() 
    },
}
</script>

<style>
.wrap{
//滚动条高度初始化
  width: 100%;
  height: 100%;
  overflow:hidden;
}
</style>

//写到这里,其实还有一个坑,不能实现滚动,怎么解决了? 终于研究了半天,一个代码一个代码的去参考:https://github.com/LY-u/vue_better-scroll/tree/master/src/components

  最终自己也无奈了,解决办法就是在
<scroll class="wrap"
          ref=scrollEle
          :pulldown="true"
          :listenScroll=true
          :pullDownRefresh="pullDownRefreshObj"
          @pulldown="loadData"
          @scroll=scroll>
<div></div>
</scroll>

注意里面的所有数据都要放在div里面  ,然后滚动条就出来了。

 

以上是关于vue结合 better-scroll 下拉加载问题的主要内容,如果未能解决你的问题,请参考以下文章

better-scroll 与 Vue 结合

vue实现刷新的第三方插件,better-scroll

vue之better-scroll的封装,包含下拉刷新,上拉加载功能及UI(核心为借鉴,我仅仅是给轮子套上了外胎...)

vue.js学习之 如何在better-scroll加载完成后,自动滚动到最底部

vue+better-scroll实现左右菜单联动效果(移动端)

vue和mintui-Loadmore结合实现下拉刷新,上拉加载 (待优化)