模板助手功能

时间:2015-03-07 20:23:22

标签: templates meteor helpers

是否可以将变量传递给模板助手函数以确定返回哪个对象,而无需为每个对象创建新模板?可能是这样的事情吗?

{{#each frame}}
    <p>{{name}}</p>
    <p>{{description}}</p>
{{/each}}


Template.templateName.helpers({
classic : [
   {
    name : 'first option',
    description : 'this is option 1'
   },
   {
    name : 'second option',
    description : 'this is option 2'
   }],
versions : [
   {
    name : 'first option',
    description : 'this is option 1'
   },
   {
    name : 'second option',
    description : 'this is option 2'
   }],
{
'frame' : function(boardSpecs){
    if (boardSpecs[0] == "classic"){
        return classic;
    }
    else if (boardSpecs[0] == "versions"){
        return versions;
    }
}
})

1 个答案:

答案 0 :(得分:1)

您可以使用{{#if}}。

例如,只有经典和版本:

模板:

{{#each frame}}
    {{#if classic.active}}
        <p>{{classic.name}}</p>
        <p>{{classic.description}}</p>
    {{/if}}
    {{#if versions.active}}
        <p>{{versions.name}}</p>
        <p>{{versions.description}}</p>
    {{/if}}
{{/each}}

助手:

Template.templateName.helpers({
    active: {
        classic: function(){ return Session.get("active") == "classic"; }
        versions: function(){ return Session.get("active") == "versions"; }
    },
    classic : [
       {
           name : 'first option',
           description : 'this is option 1'
       },
       {
           name : 'second option',
           description : 'this is option 2'
       }],
     versions : [
       {
           name : 'first option',
           description : 'this is option 1'
       },
       {
           name : 'second option',
           description : 'this is option 2'
       }]
    })

然后,当您需要更改视图时,可以设置Session.set(“active”,“您想要的名称”)。