给出以下简单模板:
<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})
这似乎不适用于模板。
如何做到这一点?
答案 0 :(得分:1)
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
集合,至少需要找到您需要查找的部门名称。