2014-03-13 68 views
0

使用ng-repeat與嵌套對象存在已知問題嗎?我有以下的JSON數據:使用Ng-Repeat時無法訪問嵌套的項目屬性

{ 
Table: [ 
{ 
contract_type: "Division Level" 
} 
], 
Table1: [ 
{ 
division: "Illinois" 
} 
], 
Table2: [ 
{ 
cost_center: "8646 - Administration" 
} 
], 
Table3: [ 
{ 
organization: "XYZ" 
}, 
{ 
organization: "ABC" 
} 
], 
Table4: [ 
{ 
settingname: "Medical Care", 
HCO: "XYZ" 
}, 
{ 
settingname: "Progressive Care", 
HCO: "ABC" 
} 
] 
} 

而且我的模板看起來像這樣:

<li class="twocolumns"> 
    <label>Contract Type:</label> 
    <label>{{displayFields.Table[0].contract_type}}</label> 
</li> 
<li class="twocolumns"> 
    <label>Division:</label> 
    <label>{{displayFields.Table1[0].division}}</label> 
</li> 
<li class="twocolumns"> 
    <label>Cost Center:</label> 
    <label>{{displayFields.Table2[0].cost_center}}</label> 
</li> 

<li ng-repeat="item in displayFields.Table4[0]" class="twocolumns"> 
    <label>{{item.settingname}}</label> 
    <label>{{item.HCO}}</label> 
    foo 
</li> 

在此輸出所得:

合同類型:處級 司:伊利諾伊州 成本中心: 8646 - 管理 foo foo

正如你所見b y兩行「foo」,ng-repeat正在看到這些項目並迭代它們。但是,訪問像item.settingname這樣的項目屬性不起作用。

我們使用角1.2.0-rc2,如果它很重要。

回答

1

你遍歷此:

item in displayFields.Table4[0] 

而事實上,你想自己遍歷Table4。刪除[0]應該可以工作,因爲repeat將基於與Table4關聯的陣列。實際上,您正在嘗試迭代Table4的數組的第一個對象。

這兩個foo輸出參考settingnameHCO本身,而不是Table4的實際元素。什麼是真實地發生在這裏的是,角正試圖打印:

ng-repeat的第一次迭代需要itemTable4[0].settingname,造成這樣的:

<label>{{Table4[0].settingname.settingname}}</label> 
<label>{{Table4[0].settingname.HCO}}</label> 

這兩個屬性是undefiend,導致一無所獲。然後打印末尾的foo

第二次迭代是完全一樣的,除了itemTable4[0].HCO

+0

衛生署。你是對的。謝謝你,先生。 – Jelling

0

你可以遍歷對象屬性

<li ng-repeat="(key, value) in yourCollection"> 
    <label>{{key}}</label> 
    <label>{{value}}</label> 
</li> 

問候