流星: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();
    }
  });
});