我有一个Meteor应用程序。我创建了一个集合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}}
我这样做是正确还是我可以避免使用帮助器,让路由器用数据填充模板?在我看来,我所做的事情是多余的。
答案 0 :(得分:2)
您是否应该使用路由器中的data
是一个品味问题。我们假设你决定使用它......
this
,因此您可以将模板代码更改为:{{#each this}}
{{> message}}
{{/each}}
或者,如果您不想在模板中使用this
,只需修改data
,如下所示:
data: function() {
return {messages: Messages.find({}, {sort: {createdAt: -1}})};
}
现在您可以保留原始模板代码:
{{#each messages}}
{{> message}}
{{/each}}