我试图找到一种方法来更改/更新集合中的模型,而无需先显式初始化它。
我的想法是通过向对象传递哈希来创建一个新的集合实例。我假设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 :(得分: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()方法适用于大多数用例。