无法从已销毁的回调中调用 View#subscribe
Can’t call View#subscribe from inside the destroyed callback
我在 template.onDestoyed;
中遇到错误和奇怪的行为
我有无限滚动订阅的代码(它存储在特殊的订阅模板中)它工作正常,直到我切换到另一条路线,并创建订阅者模板的新实例。
代码:
Template.subscriber.onCreated(function() {
var template = this;
var skipCount = 0;
template.autorun(function(c) {
template.subscribe(template.data.name, skipCount, template.data.user);
var block = true;
$(window).scroll(function() {
if (($(window).scrollTop() + $(window).height()) >= ($(document).height()) && block) {
block = false;
skipCount = skipCount + template.data.count;
console.log(template.data);
console.log("skip_count is "+skipCount);
template.subscribe(template.data.name, skipCount, template.data.user, {
onReady: function() {
block = true;
},
onStop: function() {
console.log('route switched, subscribtion stopped');
}
});
}
});
})
});
当我 "scroll down" 在一个页面上时,订阅者工作正常,当我进入另一个页面并且 "scroll down" 首先我从旧的订阅者模板中获取数据(理论上必须销毁的内容)第一次。第二次(再次向下滚动)订阅者的新实例开始正常工作。
我做错了什么?
哎呀!
流星论坛的好心人帮了我。
实际上问题出在 jquery.scroll
事件中。当模板被销毁时它没有被清理。 (这是错误吗?还是正常行为?)。我只需要取消绑定 onDestroyed
部分中的滚动事件。
我在 template.onDestoyed;
中遇到错误和奇怪的行为我有无限滚动订阅的代码(它存储在特殊的订阅模板中)它工作正常,直到我切换到另一条路线,并创建订阅者模板的新实例。
代码:
Template.subscriber.onCreated(function() {
var template = this;
var skipCount = 0;
template.autorun(function(c) {
template.subscribe(template.data.name, skipCount, template.data.user);
var block = true;
$(window).scroll(function() {
if (($(window).scrollTop() + $(window).height()) >= ($(document).height()) && block) {
block = false;
skipCount = skipCount + template.data.count;
console.log(template.data);
console.log("skip_count is "+skipCount);
template.subscribe(template.data.name, skipCount, template.data.user, {
onReady: function() {
block = true;
},
onStop: function() {
console.log('route switched, subscribtion stopped');
}
});
}
});
})
});
当我 "scroll down" 在一个页面上时,订阅者工作正常,当我进入另一个页面并且 "scroll down" 首先我从旧的订阅者模板中获取数据(理论上必须销毁的内容)第一次。第二次(再次向下滚动)订阅者的新实例开始正常工作。
我做错了什么?
哎呀!
流星论坛的好心人帮了我。
实际上问题出在 jquery.scroll
事件中。当模板被销毁时它没有被清理。 (这是错误吗?还是正常行为?)。我只需要取消绑定 onDestroyed
部分中的滚动事件。