在Mustache模板中实现if条件

时间:2013-08-02 08:05:31

标签: handlebars.js mustache

我们如何检查

之类的内容
       if( status == 0 ){
            //show pending
       }
       if( status == 1) {
            // show ok
       }
       if( status == 2 ){
            // done
       }

这在Mustache Library中。我们可以在模板中提供逻辑吗?

2 个答案:

答案 0 :(得分:4)

Mustache模板语言显然尽可能没有逻辑。

但是,您可以使用section构造来执行您想要的操作。添加布尔值以挂起,确定并完成对象,然后执行:

{{#pending}}
// show pending
{{/pending}}

{{#ok}}
// show ok
{{/ok}}

{{#done}}
// show done
{{/done}}

这实际上将比较逻辑移动到您的实际代码,这意味着模板可以保持逻辑无。

(你在标签中提到过handlebars.js。如果你正在使用Handlebars,理论上你可以通过做this这样的事来扩展语言,但这种做法违背了使用逻辑的想法无模板语言。您甚至可以grab a collection of extensions,但到那时我建议完全使用另一种模板语言。)

答案 1 :(得分:0)

我建议您尝试一下Moxy-Stencil:https://github.com/dcmox/moxyscript-stencil

主要是无逻辑的,但支持辅助参数,似乎可以用无逻辑的模板解决大多数人的困扰,例如:

{{{isActive home}}}

并在视图中:

view = {
    isActive: function(path: string){ return path === this.path ? "class='active'" : '' }
}