假设我们有一个父模板和子模板:
<template name="parent">
{{> child }}
</template>
<template name="child">
{{#if show}}
//Do something
{{/if}}
</template>
如果我们分配“秀”父模板:
if (Meteor.isClient){
Template.parent.show = function(){
return Session.get('isShowing');
}
}
有没有办法为孩子模板来访问它?
编辑
你可以做一个通用的车把帮手,所以你可以在你的HTML的任何地方使用会话值:
客户端的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 。 基本上,它的工作原理{{#阻止助手}}内,但无法使用模板,但它会在一个块的辅助工作,如果它包含一个子模板。
<template name="child">
{{#if ../show}}
Do something
{{/if}}
</template>
您也可以注册一个共同的帮助:
Template.registerHelper('isTrue', function(boolean) {
return boolean == "true";
});
并调用它,就像在你的HTML:
<input type="checkbox" checked="{{isTrue attr}}"/>