【发布时间】:2015-09-16 21:21:14
【问题描述】:
我正在为在线商店制作类别侧边栏模板。我将在 2 个地方使用它 - 在客户和管理员方面。每个人都有自己的点击类别服务。我想传递参数“redirect”,它将决定将执行什么操作,但问题是,该参数在嵌套模板中不可见 - 仅在第一级类别中。
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
Women 和 Men 类别运行良好,点击后,“redirect”被视为 true,Router 重定向到所需路由,但对于嵌套类别,“redirect”参数未定义。
如何将该参数传递给嵌套模板?
【问题讨论】:
标签: meteor handlebars.js