在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
是一个品味的问题。 我们假设你决定使用它…
- 你可以删除你的帮手。 你是对的 – 这是多余的。
- 你的模板的数据上下文是
this
所以你可以改变你的模板代码:
{{#each this}} {{> message}} {{/each}}
另外,如果你想避免在你的模板中使用this
,只需修改你的data
如下:
data: function() { return {messages: Messages.find({}, {sort: {createdAt: -1}})}; }
现在你可以保留你的原始模板代码:
{{#each messages}} {{> message}} {{/each}}