javascript - Meteor:第二次渲染铁路线后 onRendered 不会再次被触发

标签 javascript meteor iron-router

我有一条铁路由器路线:

    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/

相关文章:

javascript - 如果出现错误,如何重新编写代码部分而不重写它?

javascript - meteor js 铁路由器 : apply CSS change whenever route changes

jquery - Meteor:当使用iron-router导航到新路线时,仅在移动设备上刷新整个页面

javascript - 函数返回待处理的 promise 而不是结果

javascript - 如何使用 jquery(或 JS)检查条件包含文件是否已加载

javascript - MeteorJS - FlowRouter 随机重定向(实例)

javascript - 为什么 Meteor 更新会覆盖我文档中的现有属性?

javascript - 如何使用yield和Iron-router?

javascript - 在 React 项目中包含常规 JS 文件

javascript - 无法在 React 中安装 "useHistory"