在meteor中通过路由器填充模板

我有一个meteor应用程序。 我创build了一个收集Messages

我用服务器发布消息

 Meteor.publish("messages", function () { return Messages.find({'isDeleted': {$ne : true}}, {sort: {createdAt: -1}}); }); 

我用iron-router

 this.route('messages', { path: '/messages', template: 'messages', waitOn: function() { return Meteor.subscribe('messages'); }, data: function() { return Messages.find({}, {sort: {createdAt: -1}}); } }); 

有了这个函数,我使用data: ...但我仍然需要在messages.js使用助手来实际获取数据:

 Template.messages.helpers({ messages: function() { return Messages.find({}, {sort: {createdAt: -1}}); }, }); 

现在我准备好使用模板中的消息了

 {{#each messages}} {{> message}} {{/each}} 

我是否正确的做,或者我可以避免使用助手,只是让路由器与数据填充模板? 在我看来,我所做的是相当多余的。

无论你是否应该使用你的路由器的data是一个品味的问题。 我们假设你决定使用它…

  1. 你可以删除你的帮手。 你是对的 – 这是多余的。
  2. 你的模板的数据上下文是this所以你可以改变你的模板代码:
 {{#each this}} {{> message}} {{/each}} 

另外,如果你想避免在你的模板中使用this ,只需修改你的data如下:

 data: function() { return {messages: Messages.find({}, {sort: {createdAt: -1}})}; } 

现在你可以保留你的原始模板代码:

 {{#each messages}} {{> message}} {{/each}}