美文网首页程序员
better-scroll 上下拉加载

better-scroll 上下拉加载

作者: 星空里的尘埃 | 来源:发表于2019-02-20 16:34 被阅读111次

安装

NPM

better-scroll 托管在 Npm 上,执行如下命令安装:

npm install better-scroll --save

接下来就可以在代码中引入了,webpack 等构建工具都支持从 node_modules 里引入代码:

import BScroll from 'better-scroll'

如果是 ES5 的语法,如下:

var BScroll = require('better-scroll')

vue-ui(可视化界面安装-基于vue-cli3)

image

应运(列表滚动)

html

<div class="wrapper" ref="bscroll">
  <ul class="content">
    <li>...</li>
    <li>...</li>
    ...
  </ul>
  <!-- 这里可以放一些其它的 DOM,但不会影响滚动 -->
</div>

script(上下拉)

import BScroll from 'better-scroll'
    export default {
        name: "scroll",
        data(){
            return {
                list: []      //列表数据
            }
        },
        //进入页面初始化
        mounted() {            
            setTimeout(()=>{
                this.initScroll();
            },20)
        },
        methods: {
            getData:function () {
                //此次用来加载数据(对应加载不同page下数据)
                 this.page=this.page+1;
                /*发送请求*/
            },
            initScroll(){
                if(!this.$refs.bscroll){
                    return ;
                }
                this.scroll = new BScroll(this.$refs.bscroll,{
                    click:true,
                    scrollbar:true,
                    //上拉
                    pullUpLoad: {             
                        threshold: 50
                    }
                    /*
                    //下拉
                     pullDownRefresh:{
                        threshold:50,
                        stop:20
                    }
                    */
                });
                //上拉
                this.scroll.on('pullingUp',()=>{
                    this.getData();
                })
                 /*
                //下拉
                this.scroll.on('pullingDown',()=>{
                this.getData();
                })
                 */
            },
        },
        watch:{
            list:{
                handler:function(){
                    this.$nextTick(()=>{
                        if(this.scroll) {
                            //上拉
                            this.scroll.finishPullUp(); 
                            /* 
                            //下拉
                            this.scroll.finishPullDown();
                            */
                            this.scroll.refresh();
                        }
                    })
                },
                deep:true
            }
        },
        computed: {}
    }

css

.wrapper{
    width: 100%;
    overflow: hidden;
    position: absolute;
    top:0;
    bottom:0;
}
.sk-bag-scroll{
    width: 100%;
    height: auto;
}
.bag-item{
    width: 100%;
    display: flex;
}

单选

html

<li v-for="(item, i) in items" :class="{active:i==n}" @click="Change(item,i)">
   {{item.value}}
</li>

js

<script>
    export default {
        name: "login",
        data(){
            return {
                items: [{
                    name: '1',
                    value: '用户',
                }, {
                    name: '2',
                    value: '商家'
                }],
                n:0
            }
        },
        methods: {
            radioChange:function (item,i) {
                  this.n=i;         //控制选项与数据同步
            }
        }
    }
</script>

css

.active{}

多选

html

<ul class="box">
    <li v-for="c,index of cities"
    :class="{checked:c.bOn}"
    @click="checkbox(index)">{{c.city}}</li>
</ul>

js

<script>
    export default {
        name: "login",
        data(){
            return {
                cities : [
                {city:"北京",bOn:false},
                {city:"上海",bOn:false},
                {city:"重庆",bOn:false},
                {city:"广州",bOn:false},
                {city:"西安",bOn:false}
                ]
            }
        },
        methods: {
            radioChange:function (item,i) {
                  this.n=i;         //控制选项与数据同步
            }
        }
    }
</script>

css

body{margin:0;}
.box{ margin:150px 150px;}
ul{
    padding:0; 
    list-style:none;
}
li{
    width:50px; height:30px; display:inline-block;
    text-align:center; line-height:30px;
    cursor:pointer;margin-left:5px;
}
li:before{ 
    display:inline-block; width:10px; height:10px; 
    line-height:10px; content:""; border:1px #000 solid; 
    margin-right:2px; transition:all 0.3s linear;
}   
li.checked:before{ 
    background-color:#0CF; 
    border:1px #fff solid;
}
li.checked{color:#0CF;}

借鉴网址:https://blog.csdn.net/Number7421/article/details/81002729

相关文章

  • better-scroll在vue的使用

    某一个页面的列表使用better-scroll的上拉加载和下拉刷新功能,better-scroll被封装成vue的...

  • vue关于下拉刷新,上拉加载

    下拉刷新,上拉加载在项目中是很常见的需求 之前一直在用better-scroll,总会出现多次加载的问题,一直没办...

  • better-scroll 上下拉加载

    官方地址 :https://ustbhuangyi.github.io/better-scroll/#/zh 安装...

  • better-scroll的下拉刷新/上拉加载

    1、先上效果如 image.png 采用vux框架以及better-scroll插件 目前只有下拉刷新,保持更新上...

  • Android面试整理

    RecyclerView的上拉加载、下拉刷新怎么实现?RecyclerView原生实现侧滑、拖动? 上拉加载、下拉...

  • better-scroll 上拉加载 下拉刷新的问题

    当数据不足一个页面时 better-scroll 无法滚动,是因为只有content的高度大于wrapper高度时...

  • Vue下拉刷新组件

    之前写了上拉加载,当然也就有下拉刷新。下拉刷新在web项目中使用会比上拉加载少。这边补充两点: 1、上拉加载和下拉...

  • ionic4 入门 (五) 上拉加载 下拉刷新

    ionic4 (入门) 上拉加载 下拉刷新 继续 ionic 开发首页 上拉加载 下拉刷新 html 部分代码 下...

  • vue UI库用法

    vueUI集合 一、元素拖拽 二、VUX UI组件库 三、上拉刷新,下拉加载 下拉刷新,上拉加载 scroll 演...

  • 列表适配器

    ------上拉下拉刷新加载------****SmartRefreshLayout 智能下拉刷新框架~20190...

网友评论

    本文标题:better-scroll 上下拉加载

    本文链接:https://www.haomeiwen.com/subject/rhihyqtx.html