Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何判断jquery tmpl中是否存在子属性_Jquery_Json_Templates - Fatal编程技术网

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

如何判断jquery tmpl中是否存在子属性,jquery,json,templates,Jquery,Json,Templates,我有一个类似的问题: 我需要确定给定的子属性是否存在。我的json看起来像这样 { "nodeX": { "sub_node1": { "items": { "A": "something", "B": "etc" } }, "sub_node2": { "items": {

我有一个类似的问题:

我需要确定给定的子属性是否存在。我的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}

当您试图访问
对象
上不存在的属性时,将返回
未定义的
,其中当然永远不会有任何属性

你需要构造这个复杂的检查

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

}

jQuery模板对顶级对象(您的数据上下文)使用带()符号的JavaScript,因此要测试这一点,您必须使用

typeof nodeX === 'undefined' ? valueIfUndefined : nodeX
然后,要检查子对象是否存在,您应该能够执行以下操作

('sub_node1' in nodeX) ? 'yes!' : 'no!'
如果您只是有条件地显示属性,实际上您可以自己跳过检查,直接执行

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

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

If语句如下所示:

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

alex,谢谢你的回答。不幸的是,它不起作用……至少在jquery模板中作为一个IF语句。我稍后将发布一个JSFIDLE供大家使用