2011-12-16 82 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} 

,因爲該框架實際上是在做這些檢查你作爲它填補了模板。如果這些屬性不存在,它不會嘗試執行這些語句。