更改/更新集合中的模型

时间:2012-03-07 10:13:21

标签: collections model backbone.js

我试图找到一种方法来更改/更新集合中的模型,而无需先显式初始化它。

我的想法是通过向对象传递哈希来创建一个新的集合实例。我假设Backbone自动为每个对象创建模型实例(我是对的吗?)。 现在,如果这是真的,我应该能够以某种方式更改/更新集合中的模型,不应该吗?

我试过这个,但它不起作用:

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

1 个答案:

答案 0 :(得分:0)

我认为你不能只传递任何对象的哈希值并让Collection自动创建模型。您需要实例化模型并将它们作为模型数组传递。

我认为你所谈论的是这样的事情:

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'
});

当您在集合Class上指定model属性时,您可以使用集合的create()函数,它只需传递属性哈希就可以实例化模型。

如果您使用一些任意默认值设置Serie模型,则可以运行循环并创建一堆空模型。然后,您可以使用上面列出的代码使用.get(id).set()方法更改这些属性。虽然你有这么好的理由想要这样做吗?

感觉就像根据需要使用.create()方法适用于大多数用例。