假设我们有父模板和子模板:
<template name="parent">
{{> child }}
</template>
<template name="child">
{{#if show}}
//Do something
{{/if}}
</template>
如果我们将'show'分配给父模板:
if (Meteor.isClient){
Template.parent.show = function(){
return Session.get('isShowing');
}
}
子模板是否有办法访问它?
答案 0 :(得分:8)
修改强>
你可以制作一个通用的把手助手,这样你就可以在你的html中的任何地方使用Sessions值:
客户端js
Handlebars.registerHelper('session', function(key) {
return Session.get(key);
});
客户端HTML
<template name="child">
{{#if session "show"}}
//Do something
{{/if}}
</template>
同样,您也可以在父模板中使用{{session "show"}}
/ {{#if session "show"}}
,而不必再使用Template.parent.show
助手。
关于../
符号的使用。在某些情况下,它可能无效:https://github.com/meteor/meteor/issues/563。基本上它可以在{{#block helpers}}中使用,但不能在模板中使用,但如果它包含子模板,它将在块助手中工作。
<template name="child">
{{#if ../show}}
Do something
{{/if}}
</template>
答案 1 :(得分:2)
您还可以注册一个公共助手:
Template.registerHelper('isTrue', function(boolean) {
return boolean == "true";
});
并在你的html中调用它:
<input type="checkbox" checked="{{isTrue attr}}"/>