Router.go()不会触发渲染

时间:2014-07-25 08:25:45

标签: collections meteor rendering iron-router

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

<template name="home">
  <h1>Hello, world!</h1>
</template>

我给它一个呈现的事件:

Template.home.rendered = function () {
  alert('Hello!');
};

和“家”路线:

Router.map(function() {
  this.route('home', {
    path: '/'
  });
});

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

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

1 个答案:

答案 0 :(得分:0)

如果你只需要对元素集合应用jquery,那么使用Meteor.defer()可能会更好。 snippet explaining the usage

无论如何,我发现没有办法在不改变路线的情况下触发.rendered()函数。 当路由具有参数并且您使用Router.go()重定向到新参数(示例/页面/ 2)时,这会打击。 我用一个可怕的黑客解决了这个问题:

<span style="display:none;">{{fakeHelper}}</span>

然后在fakeHelper helper函数中插入代码。 可怕,但在那种情况下它对我有用。