Collections Router.go()不会触发渲染

Collections Router.go()不会触发渲染,collections,meteor,rendering,iron-router,Collections,Meteor,Rendering,Iron Router,假设我有一个名为“home”的模板: 和“回家”路线: 现在,当我第一次加载页面时,“Hello!”警报正确出现。但是,无论我在控制台中键入多少Router.go('home'),来自呈现的回调的警报都不会再触发 我该如何编写每次有Router.go()时都会触发的内容,但在完全呈现模板之后(具体来说,可能会发生变化的集合列表),因为我每次都想将jquery应用于一组新的集合元素?如果只需要将jquery应用于一组元素,那么最好使用Meteor.defer()。 无论如何,在不更改路由的情况下

假设我有一个名为“home”的模板:

和“回家”路线:

现在,当我第一次加载页面时,“Hello!”警报正确出现。但是,无论我在控制台中键入多少
Router.go('home')
,来自
呈现的
回调的警报都不会再触发


我该如何编写每次有Router.go()时都会触发的内容,但在完全呈现模板之后(具体来说,可能会发生变化的集合列表),因为我每次都想将jquery应用于一组新的集合元素?

如果只需要将jquery应用于一组元素,那么最好使用Meteor.defer()。

无论如何,在不更改路由的情况下,我找不到触发.rendered()函数的方法。 当路由具有参数,并且您使用Router.go()重定向到新参数(示例/page/2)时,这将失败。 我用一种可怕的方法解决了这个问题,比如:

<span style="display:none;">{{fakeHelper}}</span>
{{fakeHelper}
然后在fakeHelper函数中插入代码。
很可怕,但在那种情况下它对我有效。

你正在呼叫路由器。在已经在
主页
路线上时,你正在呼叫路由器(“主页”)?这是非常正确的,先生。这就是为什么它没有被重新渲染的原因,尝试创建另一条路线,然后在它们之间切换,你应该会看到它工作。遗憾的是,这是我找到的唯一方法,我找不到“刷新”方法。。。我应该使用Router.go()来创建一个虚拟路由,该路由只重定向回我的主模板吗?这听起来像是一个可怕的黑客行为。至于你的第二个问题,看看铁路由器中的后钩子:是的!Meteor.defer()成功了。它在调用回调之前等待DOM上的任何更新,因此我在每次“视图更改”操作之后使用它,并且每次调用的jQuery都会正确运行。事实证明,我的问题更多的是不断变化的被动内容,而不是路由器问题。。。非常感谢D先生的宝贵帮助。
Template.home.rendered = function () {
  alert('Hello!');
};
Router.map(function() {
  this.route('home', {
    path: '/'
  });
});
<span style="display:none;">{{fakeHelper}}</span>