我在嵌套模板方面遇到了一个愚蠢的问题。我想要创建一个下拉菜单与4个主要类别和约2-3个子类为每个主要类别。
<template name="Warehouselist">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> {{warehouse}} <span class="caret"></span></a>
<ul class="dropdown-menu">
{{#each Forms}}
{{>Form}} //Pass {{warehouse}} here
{{/each}}
</ul>
</li>
</template>
<template name="Form">
<li id="EWPacking"><a href="#">{{FormName}}</a></li>
</template>问题是,我不知道如何将{仓库}数据传递给子模板的助手,这样我就可以这样做了。
Template.bonus.helpers({
Userform: function(){
return UserForms.find({});
},
warehouse: function(){
return Warehouse.find({});
},
});
Template.Warehouselist.helpers({
Forms: function(Warehouse){
return Forms.find({Warehousename:Warehouse});
}
});关键是,子模板的助手必须返回不同的数据,这取决于父元素的分类。
发布于 2015-12-12 21:42:13
在子模板“窗体”中使用父数据上下文:
<template name="Warehouselist">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">{{warehouse}}<span class="caret"></span>
</a>
<ul class="dropdown-menu">
{{#each Forms}}
{{>Form}}
{{/each}}
</ul>
</li>
</template>
<template name="Form">
<li id="EWPacking">
<a href="#">{{FormName}} - {{../warehouse}}</a></li>
</template>并更改Warehouselist模板助手的javascript。使用Template.currentData()从数据上下文中获取数据仓库,并将其传递到Forms.find()中。如下所示:
Template.Warehouselist.helpers({
Forms: function(){
var warehouse = Template.currentData().warehouse;
console.log('warehouse:', warehouse);
return Forms.find({Warehousename: warehouse});
}
});如果您想按照您的要求将仓库传递给子模板,请使用:(但是:如果您遵循上面的解决方案,这是不需要的!)
{{#each Forms}}
{{>Form warehouse=warehouse}}
{{/each}} https://stackoverflow.com/questions/34239698
复制相似问题