参数未传递到嵌套模板中
Parameter isn't passed into nested template
我正在为在线商店制作类别侧边栏模板。我将在 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
女性和男性类别效果很好,点击它们后,"redirect" 被视为 true,路由器重定向到所需的路线,但对于嵌套类别,"redirect" 参数未定义。
如何将该参数传递给嵌套模板?
将代码更改为:
{{#if data.subCategories.length}}
<ul>
{{#each subCats }}
<li>
{{> categoriesSidebarItem redirect=../redirect data=this }}
</li>
{{/each}}
</ul>
{{/if}}
每个块都会更改数据上下文,因此您需要从父数据上下文中检索重定向。这就是 ../
所做的。
我正在为在线商店制作类别侧边栏模板。我将在 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
女性和男性类别效果很好,点击它们后,"redirect" 被视为 true,路由器重定向到所需的路线,但对于嵌套类别,"redirect" 参数未定义。
如何将该参数传递给嵌套模板?
将代码更改为:
{{#if data.subCategories.length}}
<ul>
{{#each subCats }}
<li>
{{> categoriesSidebarItem redirect=../redirect data=this }}
</li>
{{/each}}
</ul>
{{/if}}
每个块都会更改数据上下文,因此您需要从父数据上下文中检索重定向。这就是 ../
所做的。