1.应该在何时创建BScroll对象
1)
created : 中请求数据,ajax是异步的,这个时候可能mounted已经执行完了,也就是dom挂载完了,但数据还没请求回来,无法获取到内部元素(数据渲染出来的dom)高度. 无法渲染内部元素,无法滚动
2)
updated:数据发生改变时执行;数据改变,dom也要重新渲染,并执行updated,但无法保证是先dom渲染还是先updated,

//解决:this.$nextTick(()={    //操作    this.scroll = new BScroll(this.$refs.className,{})})

3)最佳方式:

mounted() {    this.scroll = new BScroll(this.$refs.scrollWrapper,{})}watch: {    shuju() {        this.$nextTick(() => {            this.scroll.refresh();        })    }}

2.拆分better-scroll组件----//scroller.vue

<template>    <div ref="wrapper">        <div>        //vue 感知不到slot变化,但能感知数据变化            <slot></slot>        </div>    </div></template><script>    import BScroll from 'better-scroll'    export default {        props: ['shuju'],        mounted() {            this.scroll = new BScroll(this.$refs.wrapper,{})        },        watch: {  //保障数据加载dom渲染,刷新            shuju() {                this.$nextTick(() => {                    this.scroll.refresh();                })            }        }    }</script><style></style>