流星:onRendered 在第二次渲染铁路线后不会再次被解雇
Meteor: onRendered doesn't get fired again after second render iron-route
我有铁路由:
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
并渲染它,但是每次修改模板时我都必须镜像两块代码并再次手动复制它...如果有如果有更好的选择,请告诉我。
对于那些感兴趣的人,我在初始模板加载中将 'loading' class 添加到表单中(效果参见 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();
}
});
});
我有铁路由:
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
并渲染它,但是每次修改模板时我都必须镜像两块代码并再次手动复制它...如果有如果有更好的选择,请告诉我。
对于那些感兴趣的人,我在初始模板加载中将 'loading' class 添加到表单中(效果参见 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();
}
});
});