通过 Meteor 中的路由器填充模板
Populating template through router in Meteor
我有一个 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}}
我做的是否正确,或者我是否可以避免使用助手并让路由器用数据填充模板?在我看来,我所做的是相当多余的。
是否应该从路由器使用 data
是个人喜好问题。假设您决定使用它...
- 您可以移除您的助手。你是对的 - 它是多余的。
- 您的模板的数据上下文是
this
因此您可以将模板代码更改为:
{{#each this}}
{{> message}}
{{/each}}
或者,如果您想避免在模板中使用 this
,只需按如下方式修改 data
:
data: function() {
return {messages: Messages.find({}, {sort: {createdAt: -1}})};
}
现在您可以保留原始模板代码:
{{#each messages}}
{{> message}}
{{/each}}
我有一个 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}}
我做的是否正确,或者我是否可以避免使用助手并让路由器用数据填充模板?在我看来,我所做的是相当多余的。
是否应该从路由器使用 data
是个人喜好问题。假设您决定使用它...
- 您可以移除您的助手。你是对的 - 它是多余的。
- 您的模板的数据上下文是
this
因此您可以将模板代码更改为:
{{#each this}}
{{> message}}
{{/each}}
或者,如果您想避免在模板中使用 this
,只需按如下方式修改 data
:
data: function() {
return {messages: Messages.find({}, {sort: {createdAt: -1}})};
}
现在您可以保留原始模板代码:
{{#each messages}}
{{> message}}
{{/each}}