在mustache.js中检查boolean false

时间:2013-09-17 14:07:53

标签: json templates boolean mustache

根据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的正确方法吗?

1 个答案:

答案 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上提供的最新版本具有此功能。