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