可以流星子模板访问父模板的帮手?(Can Meteor child templates access

2019-08-17 05:02发布

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

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

有没有办法为孩子模板来访问它?

Answer 1:

编辑

你可以做一个通用的车把帮手,所以你可以在你的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>


Answer 2:

您也可以注册一个共同的帮助:

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

并调用它,就像在你的HTML:

<input type="checkbox" checked="{{isTrue attr}}"/>


文章来源: Can Meteor child templates access parent template helpers?