Meteor - 模板内的查询集合

时间:2014-04-24 11:45:17

标签: meteor

给出以下简单模板:

        <ul>
            {{#each customers}}
            <li>
                <a href="/{{this._id}}">{{this.customerName}}</a>
                <span class="department">{{this.departmentId}}</span>
            </li>
            {{/each}}
        </ul>

我想将departmentId替换为部门名称。但这需要查询部门集合,如:

departments.find({_id: this.departmentId})

这似乎不适用于模板。

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

创建template helper

Template.yourTemplateNameHere.helpers({
  getDepartmentNameFromId: function () {
    // 'departments' is a Meteor collection
    // 'this' inherits from the same 'this' in your template
    var department = departments.findOne(this.departmentId);
    if (department != null && department.name != null)
      return department.name;
    else
      return ""; // Or "Unknown Department" or whatever you want
  }
});

然后替换你的第四行:

<span class="department">{{getDepartmentNameFromId}}</span>

为什么要编写所有这些代码?你不能在模板中这样做吗?嗯,对不起,你不能。这就是Handlebars的用武之地。将代码逻辑(帮助器)与表示逻辑(模板)分离非常严格。

请注意,您还需要确保在客户端上填充了departments集合,至少需要找到您需要查找的部门名称。