如何从流星模板助手返回模板?

时间:2014-10-02 20:43:50

标签: javascript meteor spacebars meteor-helper

我的HTML:

<template name="foo">
    {{#each category}}
         {{#if this.custom}}
              {{> someTemplateName}}
         {{else}}
              {{> generic}}
         {{/if}}
     {{/each}}
 </template

如何将某些值返回到“someTemplateName”,以便我可以根据#each语句中的对象切换模板。

 Template.foo.someTemplateName = function () {
      return A_TEMPLATE_NAME
 }

感谢。

2 个答案:

答案 0 :(得分:2)

正确的语法如下:

JS

Template.foo.helpers({
  someTemplate:function () {
    return Template.someTemplate;
  }
});

HTML

<template name="someTemplate">
  <p>SOME TEMPLATE</p>
</template>

这不是您操作的名称,而是模板对象,它们位于变量名Template.myTemplate下。

如果您想操作模板名称,请尝试UI.dynamic

HTML

<template name="foo">
  {{> UI.dynamic template=someTemplateName}}
</template>

JS

Template.foo.helpers({
  someTemplateName:function () {
    return "someTemplate";
  }
});

答案 1 :(得分:2)

解决方案实际上非常简单。

 <template name="foo">
     {{#each category}}
        {{#if this.custom}}
          {{> someTemplateName}}
        {{else}}
          {{> generic}}
       {{/if}}
     {{/each}}
 </template>

我还给了一个帮手:

Template.foo.someTemplateName = function () {
    return Template[this.name];
}

this.name来自`{{#each}}&#39;上下文。