【问题标题】:How can I use if condition on the meteor template?如何在流星模板上使用 if 条件?
【发布时间】:2015-04-24 13:54:32
【问题描述】:

我想在 Meteor Blaze 模板中使用 if 条件。假设您在要遍历任务的用户集合上有一个助手 users,如果用户名是管理员,请使用“红色”样式:

<ul>
    {{#each users}}
        <li {{#if(name==admin)}}class="red"{{/if}}>{{name}}</li>
    {{/each}}
</ul> 

【问题讨论】:

    标签: javascript meteor spacebars


    【解决方案1】:

    Meteor 使用SpacebarsHandlebars 的变体,是“无逻辑”模板。你需要定义一个Template helper,然后在{{#if}}中使用。

    Template.foo.helpers({
      isAdmin: function (name) {
        return name === "admin"
      }
    });
    
    <ul>
      {{#each users}}
        <li {{#if isAdmin name}}class="red"{{/if}}>{{name}}</li>
      {{/each}}
    </ul>
    

    【讨论】:

    • 谢谢!。但是是否可以在模板上使用条件或表达式?
    • @Phirum,空格键中的所有计算都必须通过助手(或数据上下文)完成。
    • @PeppeL-G 为什么一切都需要通过助手来完成,空格键不应该引入===!== 语句吗?
    • @DavidAnderton,我不知道为什么空格键不支持,我只能说它不支持。但这可能是因为空格键负责视图,并且将计算(例如等式表达式)远离视图是一种很好的做法,因此您只需要发送模型应该呈现的视图(但如果你问我,不允许在视图中使用相等的表达式太极端了)。