我有一条铁路由器路线:
Router.route('/profiel/bewerken', {
subscriptions: function () {
return Meteor.subscribe('currentUser');
},
action: function () {
if (this.ready())
this.render('profielBewerken', {
to: 'container',
data: function () { return Meteor.user(); }
});
else
this.render('profielBewerken', {
to: 'container',
data: { loading: true }
});
}
});
它会等到订阅可用,然后在数据可用后再次呈现模板。即使它确实使用数据再次渲染模板,我的 Template.profielBewerken.onRendered(function () { ...})
回调也不会再次触发!有谁知道为什么不这样做以及是否有解决方案?
我可以复制模板并将其重命名为 profielBewerken2
并渲染它,但是随后我必须镜像两 block 代码,并在每次修改模板时再次手动复制它...如果有如果有更好的选择,请告诉我。
对于那些感兴趣的人,我将“加载”类添加到初始模板加载中的表单中(有关效果,请参阅 http://semantic-ui.com/collections/form.html)。
谢谢!
最佳答案
onRendered only fires when an instance of the template is added to the DOM ,因此它不会在数据更改时再次触发。
如果您想在数据准备好后执行代码,您应该使用 template.autorun功能如下:
Template.profielBewerken.onRendered(function () {
this.autorun(function (comp) {
if (Meteor.user()) {
// do some stuff
comp.stop();
}
});
});
关于javascript - Meteor:第二次渲染铁路线后 onRendered 不会再次被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006474/