胡子空值

时间:2013-10-04 12:48:38

标签: javascript mustache

我有一个对象数组,其中一个键的值可以是true,false或null。

var a = [
            {
                something: true
            },
            {
                something: false
            },
            {
                something: null
            }
        ];

而胡子应该以不同的方式涵盖所有这些案件。

例如,对于true,它应该打印:

 <a>true</a>

对于错误:

 <p>false</p>

和null:

 <span>null</span>

有没有办法在Mustache中为3种不同类型的值编写if / else语句?

2 个答案:

答案 0 :(得分:1)

一个更简单的方法是这样的:

{{#parentId}}{{.}}{{/parentId}}{{^parentId}}null{{/parentId}}

在上面的示例中,如果parentId有值,则输出,而文本null没有值。

答案 1 :(得分:0)

我使用过Mustache函数来解决它。您可以向将传递给Mustache.render方法的对象添加方法:

基本上你需要遍历对象来添加新方法,所以你最终得到这样的东西:

var a = [
            {
                something: true,
                somemethod: function () {
                    return function (text) {
                        if (this.something === null) {
                            return "<p>" + text + "</p>";
                        } else if (!this.something) {
                            return "<a>" + text + "</a>";
                        } else {
                            return "<span>" + text + "</span>";
                        }
                    }
                }
            },
            {
                something: false,
                somemethod: function () {
                    return function (text) {
                        if (this.something === null) {
                            return "<p>" + text + "</p>";
                        } else if (!this.something) {
                            return "<a>" + text + "</a>";
                        } else {
                            return "<span>" + text + "</span>";
                        }
                    }
                }
            }
        ];

稍后您可以在模板中使用以下内容:

{{#somemethod}}this text will be used{{/somemethod}}