在vue
中使用better-scroll
插件。在mounted函数中初始化better-scroll对象。代码如下:
mounted(){
var _this = this;
this.$nextTick(()=>{
this.scroll = new BScroll(this.$refs.wrapper,{
click:true
});
// 创建对象后打印this.scroll
// this.scroll.minScrollY = 0;
// this.scroll.maxScrollY = 0;
console.log(this.scroll)
this.scroll.minScrollY = 0;
this.scroll.maxScrollY = this.scroll.maxScrollY - 15;
// 修改完后打印this.scroll,发现是修改成功的。但是通过vue-devtools查看该对象的这个两个属性值并没有修改成功,这是为什么?
// this.scroll.minScrollY = 0;
// this.scroll.maxScrollY = -15;
})
}
修改完后打印this.scroll
,发现是修改成功的。但是通过vue-devtools查看该对象的这个两个属性值并没有修改成功,这是为什么?
然后我将nextTick函数换成setTimeout
mounted(){
var _this = this;
setTimeout(function(){
_this.scroll = new BScroll(_this.$refs.wrapper,{
click:true
});
// 创建对象后打印this.scroll
// this.scroll.minScrollY = 0;
// this.scroll.maxScrollY = 0;
console.log(this.scroll);
_this.scroll.minScrollY = 0;
_this.scroll.maxScrollY = _this.scroll.maxScrollY - 15;
},1)
}
发现换成setTimeout之后就没有刚才的问题了,vue-devtools也是现实修改后的值。$nextTick函数不是相当于一个setTimeout吗?
为什么呢?
$nextTick是个异步操作。