javascript - 通过 Meteor 中的路由器填充模板

标签 javascript node.js meteor iron-router

我有一个 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 是个人喜好问题。假设您决定使用它...

  1. 你可以移除你的助手。你是对的 - 这是多余的。
  2. 模板的数据上下文是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/

相关文章:

node.js - 为什么多部分不生成关闭事件

node.js - 如何使用 npm forever-monitor 登录到标准输出

javascript - 在nodejs中解析一个json树

mongodb - meteor 集合获取上一个和下一个项目

javascript - 如何使用 react-router 重新加载页面?

javascript - 使用 Gulp 为文件名添加时间戳

javascript - 我如何根据数组字符串元素的第一个字符在 Javascript 中对数组进行排序? - javascript

meteor 在哪里定义我的收藏?

javascript - Phaser 游戏 d​​estroy() 不起作用

javascript - 从另一点以一定方位行驶一定距离后如何获得纬度和经度?