根据this question,检查传递给mustache模板的json对象中的false
是这样的:
{{^like}}
it is false
{{/like}}
{{#like}}
it is true
{{/like}}
假设json看起来像{"like":true}
但是在Mustache demo page上尝试这一点并没有按预期进行。 html输出显示如下:
it is true
it is false
{{/like}}
如果模板中有{{^whatever}}
,为什么会中断?这不是检查false
的正确方法吗?
答案 0 :(得分:1)
倒置部分(^)在Mustache github上实现,但MustacheDemoIO使用不支持该版本的库的过时版本。在过时的代码中,您可以找到:
// for each {{#foo}}{{/foo}} section do...
return template.replace(regex, function(match, name, content) {
var value = that.find(name, context);
if(that.is_array(value)) { // Enumerable, Let's loop!
return that.map(value, function(row) {
return that.render(content, that.merge(context,
that.create_context(row)), partials, true);
}).join("");
} else if(value) { // boolean section
return that.render(content, context, partials, true);
} else {
return "";
}
});
但{{^ foo}} {{/ foo}}没有任何内容。这就是为什么它会扼杀你的榜样。
但这应该不是一个大问题,因为Mustache github上提供的最新版本具有此功能。