我正在为网上商店做类别侧边栏模板。我将在2个地方使用它 - 在客户和管理员方面。每个人都有自己的点击类别服务。我想传递参数“redirect”,它将决定将要执行的操作,但问题是,该参数在嵌套模板中不可见 - 仅在第1级类别中。
HTML:
<template name="categoriesSidebar">
<ul>
{{#each mainCategories}}
<li>
{{> categoriesSidebarItem redirect=true data=this }}
</li>
{{/each}}
</ul>
</template>
<template name="categoriesSidebarItem">
<a href="#">
{{data.name}}
</a>
{{#if data.subCategories.length}}
<ul>
{{#each subCats }}
<li>
{{> categoriesSidebarItem redirect=redirect data=this }}
</li>
{{/each}}
</ul>
{{/if}}
</template>
Javascript:
Template.categoriesSidebar.helpers({
mainCategories: function() {
return Categories.find({'categoryLevel' : 1});
}
});
Template.categoriesSidebarItem.helpers({
subCats : function(){
return Categories.find({_id:{$in: this.data.subCategories}});
}
});
Template.categoriesSidebarItem.events({
'click a' : function(event){
if(this.redirect == true){
Router.go('category',{_id : this.data._id});
return false;
}else{
//categoryId is ReactiveVar used in another template
categoryId.set(this.category._id);
}
}
})
结果:
Women
Nike
Men
Nike
Adidas
女性和男性类别运行良好,点击它们后,“重定向”被视为真实,路由器重定向到所需的路线,但对于嵌套类别,“重定向”参数未定义。
如何将该参数传递给嵌套模板?
答案 0 :(得分:0)
将代码更改为:
{{#if data.subCategories.length}}
<ul>
{{#each subCats }}
<li>
{{> categoriesSidebarItem redirect=../redirect data=this }}
</li>
{{/each}}
</ul>
{{/if}}
每个块都会更改数据上下文,因此您需要从父数据上下文中检索重定向。这是../
的作用。