2012-03-07 95 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()方法适用于大多数用例。