当用户到达页面末尾时,我使用ReactiveVar来扩展订阅但最近我遇到了一些奇怪的行为(可能是因为某些包更新?)
Template.hello.onCreated(function(){
var tpl = this;
tpl.dict = new ReactiveDict();
tpl.var = new ReactiveVar();
Session.set('session', undefined);
Tracker.autorun(function(){
console.log(tpl.dict.get('foo'), tpl.var.get(), Session.get('session'));
})
});
Template.hello.onRendered(function(){
var tpl = this;
console.log(this.dict.get('foo'), this.var.get(), Session.get('session'));
tpl.dict.set('foo', 'foo');
tpl.var.set('foo');
Session.set('session', 'foo');
});
这给出了:
undefined undefined undefined (onCreated)
undefined undefined undefined (onRendered)
foo foo foo (onCreated, after autorun)
我的基本问题是:这应该是正常行为吗? ReactiveVar / Dict是否应该在更改后自动自动运行?
对此有任何想法或我只是愚蠢吗? :)
答案 0 :(得分:1)
这是完全预期的行为。 onRendered
在onRendered
之前触发onRendered
,只有在onCreated
的最后才会为您的变量设置任何值。是的,只有在自动运行块(隐式或显式)中的代码才会在依赖关系发生变化时重新运行。 {{1}}和{{1}}本身不具有反应性(与模板助手不同)。