如何从 Meteor 模板助手返回模板?

Posted

技术标签:

【中文标题】如何从 Meteor 模板助手返回模板?【英文标题】:How Do I Return Template From Meteor Template Helper? 【发布时间】:2014-11-27 22:41:12 【问题描述】:

我的 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
 

谢谢。

【问题讨论】:

【参考方案1】:

正确的语法如下:

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";
  
);

【讨论】:

谢谢!看到你的帖子有点晚了。我导出的实现非常相似。【参考方案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' 上下文。

【讨论】:

以上是关于如何从 Meteor 模板助手返回模板?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Meteor 模板助手不在上下文中返回变量?

如何在模板助手中使用 Meteor 方法

如何在 Meteor 中将全局模板助手放在一起?

Meteor:从另一个助手访问模板助手(或变量)

在模板上下文中从另一个助手调用一个助手 (Meteor 0.9.4)

如何使用 Meteor 模板助手编辑 Iron-Router 中作为参数传递的值?