vue-bscroll

1.0.4 • Public • Published

vue-bscroll

vue-bscroll是基于better-scroll的vue的滚动组件,它通过props和$emit操作better-scroll的方法,将better-scroll组件化,提供下拉刷新、上拉加载等操作

npm安装

npm i vue-bscroll --save

props

参数 说明 类型 默认值
attr better-scroll 里的选项 Object 见Obj1
func 通过配置Object来控制是否触发事件(配置选项见Obj1) Object 见Obj2
downText 配置下拉的文本 Object {pull:'下拉刷新',loosen:'松开刷新',tip:'刷新完成'}
upText 配置上拉的文本 Object {pull:'正在加载数据',tip:'已无更多数据'}
Obj1: {
    click: true,
    probeType: 1,
    pullDownRefresh, {
        threshold: 58,
        stop: 50
    },
    pullUpLoad, {
      threshold: 50
    }
}
Obj2: {
    listenBeforeScrollStart: false,//滚动前时        派发beforeScrollStart事件 返回参数pos
    listenScroll: false,           //滚动时          派发scroll事件 返回参数pos
    listenScrollEnd: false,        //滚动结束时      派发scrollEnd事件     返回参数pos
    listenScrollToEnd: false,      //滚动到底部时     派发scrollToEnd事件 返回参数pos
    listenTouchEnd: false,         //手指/鼠标离开时  派发touchEnd事件 返回参数pos
    listenPullingDown: false,      //下拉刷新时       派发pullingDown事件 在这里执行刷新操作
    listenPullingUp: false         //上拉加载时       派发pullingUp事件 在这里执行数据请求操作
}

methods

名称 说明 参数
refresh 重新计算 better-scroll
scrollTo 滚动到指定的位置 x(横轴左边){Number}
y(纵轴坐标){Number}
time(滚动动画执行的时长){Number}
easing(缓动函数){Object}
scrollToElement 滚动到指定的目标元素 el(滚动到的目标元素){DOM | String}
time(滚动动画执行的时长){Number}
offsetX(相对于目标元素的横轴偏移量,如果设置为 true,则滚到目标元素的中心位置){Number | Boolean}
offsetY(相对于目标元素的纵轴偏移量,如果设置为true,则滚到目标元素的中心位置){Number | Boolean}
easing (缓动函数){Object}
afterRefresh 在下拉刷新后调用(执行刷新操作后调用,必须)
afterUpload 在上拉加载后调用(即请求获取数据后调用,必须) flag(true表示还有数据,false表示没有更多数据了){Boolean}

events 注意 这些事件触发需要在props的func里配置对应的参数,下拉刷新同时需要设置listenScroll:true

名称 说明 返回参数
beforeScrollStart 滚动前触发 pos(一个包括x,y坐标的Object)
scroll 滚动时 pos(一个包括x,y坐标的Object)
scrollEnd 滚结束时 pos(一个包括x,y坐标的Object)
scrollToEnd 滚到底部时 pos(一个包括x,y坐标的Object)
touchEnd 手指、鼠标离开时 pos(一个包括x,y坐标的Object)
pullingDown 下拉刷新时
pullingUp 上拉加载时

例子

<template>
    <div class="wrapper">
        <BScroll ref="bscroll" :func="func" @pullingUp="listenPullingUp" @pullingDown="listenPullingDown">
            <li v-for="(item, index) in list" :key="index">{{item}}</li>
        </BScroll>
    </div>
</template>
import BScroll from 'vue-bscroll'
export default {
    data () {
        return {
            list: [],
            func: {
                // 监听滚动
                listenScroll: true,
                // 监听下拉刷新
                listenPullingDown: true,
                // 监听上拉加载
                listenPullingUp: true
            }
        }
    },
    components: {
        BScroll
    },
    methods: {
        listenPullingDown() {
            this.list = []
            this.loadData()
            setTimeout(() => {
                this.$refs.bscroll.afterRefresh()
            }, 1000)
        },
        listenPullingUp() {
            let _this = this
            setTimeout(() => {
                _this.loadData()
                _this.$refs.bscroll.afterUpload(true)
            }, 1000)
        },
        loadData(callback = () => {}) {
            let length = this.list.length
            let newArr = []
            for (let i = length; i < length + 20; i++) {
                newArr.push(`${i}条数据`)
            }
            this.list = this.list.concat(newArr)
        }
    },
    mounted() {
        this.loadData()
    }
}
</script>
<style lang="scss" scoped>
.wrapper{
    height: 500px;
    width: 100%;
    li{
        height: 48px;
        line-height: 48px;
    }
}
</style>

Readme

Keywords

none

Package Sidebar

Install

npm i vue-bscroll

Weekly Downloads

0

Version

1.0.4

License

ISC

Unpacked Size

16.1 kB

Total Files

6

Last publish

Collaborators

  • likely