如何在路由更改但模板保持不变的情况下第二次运行onRendered?

时间:2015-04-27 22:58:09

标签: meteor iron-router

我有一条铁路由器路由来更新特定项目的数据:

Router.route('/project/:key/update', {
  ...
});

每次用户导航到"编辑项目页面"我想关注项目名称输入。

template.onRendered(function() {
  this.$('form input[name="project_name"]').focus();
});

当从仪表板导航到任何给定的编辑项目页面时,这非常有用。但是,导航到/从一个项目页面导航到另一个项目页面onRendered功能不会重新运行,因此输入不会集中。

1 个答案:

答案 0 :(得分:6)

您可以强制onRendered在上下文更改后重新评估,方法是在currentData内添加autorun支票,如下所示:

Template.myTemplate.onRendered(function() {
  var self = this;
  this.autorun(function() {
    // hack to force the autorun to reevaluate
    Template.currentData();

    // insert onRendered code here
    self.$('form input[name="project_name"]').focus();
  });
});

有关详细信息,请参阅this issue的结尾。