使用 Mustache,可以使用and标签区分值0
和非0
值:{{#section}}
{{^inverted}}
<!-- If number_of_hits is not 0, show hits -->
{{#number_of_hits}}
{{number_of_hits}} hits
{{/number_of_hits}}
<!-- If number of hits is 0 (or any other falsy value) -->
{{^number_of_hits}}
No hits
{{/number_of_hits}}
据我所知,Mustache 无法检测到 1 和 2 之间的差异。为此,您必须修改view
传递给模板的对象。可能是这样的:
var hits = 3;
var view = {
search_term: 'something',
number_of_hits: hits,
hitkind: {
none: hits === 0,
one: hits === 1,
many: hits > 1
}
};
并且在模板中
{{#hitkind.none}} No hits {{/hitkind.none}}
{{#hitkind.one }} One hit {{/hitkind.one}}
{{#hitkind.many}} {{number_of_hits}} hits {{/hitkind.many}}
或者,您可以考虑将模板引擎更改为Handlebars.js。Handlebars 是 Mustache 的超集,这意味着您的所有 Mustache 模板都可以使用它。Handlebars 模板和 Mustache 一样是无逻辑的,因此它不能让您直接将逻辑写入模板。相反,它提供了一个概念Helpers
,或可从您的模板调用的函数。
使用 Handlebars,您可以定义一个助手,例如:
Handlebars.registerHelper('hitCount', function(count) {
if(count === 0) return "No hits";
if(count === 1) return "One hit";
return count + " hits".
});
并从模板中调用它:
{{hitCount number_of_hits}}