为啥嵌套在模板中的每个都不输出
Posted
技术标签:
【中文标题】为啥嵌套在模板中的每个都不输出【英文标题】:Why does nested each in template output nothing为什么嵌套在模板中的每个都不输出 【发布时间】:2016-05-08 21:36:41 【问题描述】:虽然这是按预期呈现的:
#each Items // a collection
title
/each
#each types // another ollection
refId
/each
如果我把它放在一起:
#each Items
title
#each types
refId
/each
/each
#each types
为空。
模板助手:
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
<div>
<select class="list-group select_side_addons">
#each restMenuSideItems
<option>restRefId</option>
/each
</select>
</div>
/each
即使将#each restMenuSideItems
替换为#each ../restMenuSideItems
,也不会出现任何内容。
怎么了?
【问题讨论】:
【参考方案1】:因为#each
子句将数据上下文更改为当前项。
如果您想在每个Items
中列出types
,您可以使用..
获取父数据上下文。
如果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.
);
【讨论】:
谢谢,但还是一样。 奇怪,应该可以。您能否提供更多代码(例如,您的助手和更完整的模板代码)?Items
和 types
来自哪里?
刚刚做了。 @MasterAM
每个里面有一个不同的集合,它不需要使用../,我猜是因为它们没有具有相同键的字段。
问题可能不在于它是相同/不同的集合,而在于它是使用数据上下文进行查询的助手。应该将父数据上下文作为参数传递。以上是关于为啥嵌套在模板中的每个都不输出的主要内容,如果未能解决你的问题,请参考以下文章