使用客户端mustache.js template engine实现以下演示文稿的最简单方法是什么?
var view = {
search_term: 'something',
number_of_hits: 3,
hits: [...]
};
如果number_of_hits
== 0,则在屏幕上打印:“未找到结果”
如果number_of_hits
== 1,则在屏幕上打印:“找到一个结果”
如果number_of_hits
> 1然后在屏幕上打印:“ N 结果找到”
知道小胡子是无逻辑模板引擎,是否可以使用现有的小胡子标签来完成它,或者我将不得不更改JSON响应?
答案 0 :(得分:1)
使用Mustache,可以使用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}}