2011-12-16 321 views
2

存在一个子属性我有一个类似的问题,像这样的:see link如何判断jQuery的TMPL

我需要什么,以确定是否给定子属性存在。我的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是否存在?

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

回答

0

IF语句是这样的:

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

当您试图访问一个不存在的属性在Objectundefined返回,其中当然不会有任何属性。

需要构建这个令人费解的检查...

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

} 
+0

亚历克斯,感谢您的回答。不幸的是它没有工作......至少作为jQuery模板中的IF语句。我稍后会发布一个jsfiddle来玩 – 2011-12-16 12:16:11

0

jQuery的模板使用的JavaScript与顶级对象()符号(数据上下文),所以测试,你必须使用

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

然后检查是否有子对象的存在,你应该能够做到

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

如果你只是有条件地显示属性,你实际上可以跳过自己检查他们只是做

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

,因为该框架实际上是在做这些检查你作为它填补了模板。如果这些属性不存在,它不会尝试执行这些语句。