我有一个 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
中使用 helper 来实际获取数据:
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}}
关于javascript - 通过 Meteor 中的路由器填充模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086106/