如何判断jquery tmpl中是否存在子属性

时间:2011-12-16 04:26:31

标签: jquery json templates

我遇到类似这样的问题:see link

我需要确定是否存在给定的 SUBproperty 。我的json看起来像这样

{
    "nodeX": {
        "sub_node1": {
            "items": {
                "A": "something",
                "B": "etc"
            }
        },
        "sub_node2": {
            "items": {
                "A": "another thing",
                "B": "blablabla",
                "C": {
                    "top": 50,
                    "left": 75
                }
            }
        }
    }
}

如何制作IF语句以查看nodeX.sub_node2.items.C是否存在?

如果我这样做,我会收到错误: {{if $ {nodeX.sub_node2.items.C}} ... {{/ if}}

3 个答案:

答案 0 :(得分:0)

当您尝试访问Object上不存在的属性时,会返回undefined,其中当然不会有任何属性。

你需要构建这个错综复杂的支票......

if (nodeX && nodeX.sub_node2 && nodeX.sub_node2.items && nodeX.sub_node2.items.C) {

}

答案 1 :(得分:0)

jQuery模板对顶级对象(您的数据上下文)使用JavaScript with()表示法,因此要测试它,您必须使用

typeof nodeX === 'undefined' ? valueIfUndefined : nodeX

然后检查是否存在子对象,您应该可以

('sub_node1' in nodeX) ? 'yes!' : 'no!'

如果您只是有条件地显示属性,您实际上可以自己跳过检查它们,然后执行

${items.A}${items.C}

因为框架实际上是在填充模板时为您执行这些检查。如果属性不存在,则不会尝试执行语句。

答案 2 :(得分:0)

IF声明如下:

{{if typeof nodeX.sub_node2.items.C !== "undefined"}}