虽然这是按预期呈现的:
{{#each Items}} // a collection
{{title}}
{{/each}}
{{#each types}} // another ollection
{{refId}}
{{/each}}
如果我把它放在一起:
{{#each Items}}
{{title}}
{{#each types}}
{{refId}}
{{/each}}
{{/each}}
#each类型为空.
模板助手:
Template.menuItems.helpers({
restMenuItems: function() {
return RestMenuItems.find({restRefId: this._id},{sort:Template.instance().sort.get()});
},restMenuSideItems: function() {
return RestMenuSideItems.find({restRefId: this._id},{sort:Template.instance().sort.get()});
}
});
Template.menuItems.onCreated( function(){
this.subscribe('restMenuItems');
this.subscribe('restMenuSideItems');
});
还有一些模板代码:
{{#each restMenuItems}}
即使用{{#each ../restMenuSideItems}}替换{{#each restMenuSideItems}},也不会出现任何问题.
怎么了?
最佳答案
因为#each子句将数据上下文更改为当前项.
如果您想要每个Items中的类型列表,您可以使用…获取父数据上下文
如果types是父上下文的属性:
{{#each Items}}
{{title}}
{{#each ../types}}
{{refId}}
{{/each}}
{{/each}}
如果types是模板助手,您可以将父上下文作为参数传递给它:
{{#each Items}}
{{title}}
{{#each types ..}}
{{refId}}
{{/each}}
{{/each}}
并使用上下文查询.
Template.myTemplate.helpers({
types: function(parent) {
// you now have the parent context here.
// use parent._id etc. where you used this._id in the
// "flat" version.
}
});