- 31
- 0
我用isscroll插件写上拉加载的效果,大致的代码流程是这样的:
var vm = new Vue({//页面实例化一个vue对象
el:'#dome',
data:{
myscroll:'',
}
//...
})
function _scroll(){
vm.myscroll = new isscroll('',{//实例化一个myscroll对象
//code
})
};
我遇到的问题是这样的:
当我vm.init = function(){
ajax(...,data,function(){
//...异步数据处理完成后,demo树更新,调用_scroll,实例化myscroll对象
Vue.nextTick(function(){
_scroll();//实例化成功
})
});
}
现在有另一个逻辑:
vm.doing = function(){
//code
Vue.nextTick(function(){
vm.myscroll.refresh();//当我页面上调用该方法时,会报错;error in nextTick:"ReferenceError: myScroll is not defined"
})
}
...这是为什么?当我做如下修改时就正常了
vm.doing = function(){
//code
Vue.nextTick(function(){
setTimeout(function(){
vm.myscroll.refresh();//正常了
},100)
})
}
为什么nextTick方法调用后还要加一个延时?难道当执行该表达式时,demo树还没有加载完?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
千里山河 普通会员 1楼
Vue.nextTick和setTimeout、setInterval等都是在处理异步操作时常用的回调函数,但是它们之间还是有一些不同点的。
1.setTimeout、setInterval的回调函数返回的是JavaScript的函数,而不是Vue实例。也就是说,setTimeout、setInterval会在DOM刷新之后立即执行回调函数,但是Vue实例在DOM刷新之前可能还没有被创建。
2.Vue.nextTick是Vue提供的一种新的同步异步操作的方式。在Vue中,同步操作(如定时器)通常会阻塞Vue实例的执行,直到同步操作完成。而Vue.nextTick则会立即执行同步操作,避免阻塞Vue实例的执行。
3.Vue.nextTick主要用于同步执行多个异步操作。例如,你可以使用Vue.nextTick来处理用户的提交操作、数据的更新等。
因此,Vue.nextTick在处理同步操作时有其独特的优势,但是它的使用场景和特性可能会与你的需求有所不同。因此,在使用Vue.nextTick时,建议你根据自己的实际需求来选择合适的方式。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
