16

假设我们有一个父模板和一个子模板:

<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');
   }
}

子模板有什么办法可以访问它吗?

4

2 回答 2

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>
于 2013-02-28T08:23:26.920 回答
2

您还可以注册一个通用助手:

Template.registerHelper('isTrue', function(boolean) {
    return boolean == "true";
});

就像在你的 html 中那样调用它:

<input type="checkbox" checked="{{isTrue attr}}"/>
于 2015-06-04T11:46:56.437 回答