3

我有一个对象数组,它们的键的值可以是真、假或空。

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

Mustache 应该以不同的方式涵盖所有这些情况。

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

 <a>true</a>

为假:

 <p>false</p>

对于空:

 <span>null</span>

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

4

2 回答 2

4

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

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

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

于 2019-11-27T19:31:33.567 回答
1

我已经使用 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}}
于 2013-10-16T14:00:08.500 回答