2012-03-07 99 views
0

我試圖找到一種方法來更改/更新集合中的模型,而無需首先明確地初始化它。集合中的更改/更新模型

這個想法是我創建一個新的集合實例,通過傳遞一個對象的散列給它。我假設Backbone爲每個對象自動創建模型實例(對嗎?)。 現在,如果這是真的,我應該以某種方式能夠更改/更新集合中的模型,不是嗎?

我已經試過這一點,但它不工作:

serie = view.collection.get(serie_id); 
serie.set({ 
    name: view.$('.series-name').val(),     
    format: view.$('.series-format').val(), 
    number: view.$('.series-number').val() 
}); 

回答

0

我不認爲你可以傳遞對象的任何哈希,並有自動的收集創建模型。您需要實例化模型並將它們作爲模型數組傳遞。

我想你在談論的是這樣的事情,雖然:

ViewCollection = Backbone.Collection.extend({ 
    model: Serie 
}); 

myViewCollection = new ViewCollection(); 

// This will automatically create a Serie model instance and add it in your collection 
myViewCollection.create({ 
    name: 'something', 
    format: 'something', 
    number: 'something' 
}); 

當你指定的集合類模型屬性,那麼你可以利用你的收藏,它的創建()函數將通過傳遞屬性的散列來實例化模型。

如果您使用一些任意默認值設置您的意甲模型,您可以運行一個循環並創建一堆空模型。然後,您可以使用上面列出的代碼使用.get(id).set()方法更改這些屬性。雖然有這樣一個很好的理由,你想這樣做嗎?

感覺就像根據需要使用.create()方法適用於大多數用例。