你試圖做什麼沒有任何意義。你defaults
是保存單個對象的數組:
defaults: {
attrArray: [
{ item_id: '', type: '', name: '' }
]
},
你會使用一個數組,如果你想堅持的屬性對象的列表。但是,如果你有一個屬性對象列表,你期望attrArray['item_id']
可以引用哪一個item_id
?您是否假設attrArray
將始終初始化爲默認值,並且沒有人會發送attrArray
作爲模型初始數據的一部分?如果是這樣,你想要更多的東西是這樣的:
// Use a function so that each instance gets its own array,
// otherwise the default array will be attached to the prototype
// and shared by all instances.
defaults: function() {
return {
attrArray: [
{ item_id: '', type: '', name: '' }
]
};
},
initialize: function() {
// get will return a reference to the array (not a copy!) so
// we can modify it in-place.
this.get('attrArray')[0]['item_id'] = this.cid;
}
注意,你會碰到需要特殊處理的一些問題與陣列屬性:
get('attrArray')
將參考返回數組那就是在模型內部,所以修改返回值會改變模型。
- 之類的東西
a = m.get('attrArray'); a.push({ ... }); m.set('attrArray', a)
將無法正常工作,你指望他們的set
不會注意到該數組已經改變(因爲它有沒有,a == a
畢竟是真實的)的方式,所以你不會得到"change"
事件,除非你可以在get
和set
之間的某個地方克隆attrArray
。
d'oh!我刪除了數組包裝,因爲它對我沒有意義:P –