從文檔
設定方法執行集合的「智能」更新與 通過了模型列表。如果列表中的某個模型尚未處於 集合中,則會添加它;如果該模型已經在集合 中,則其屬性將被合併;如果該集合包含任何不在列表中的 模型,它們將被刪除。
爲模型提供`idAttribute'以便集合標識基於id的標識也是一個好主意。否則,該集合將不知道該模型是否是新模型。
所以設置id並使用set
後,你可以看到,就是執行智能更新
$(function() {
var MyModel = Backbone.Model.extend({
// This attribute should be set as a default
defaults: {
Name: ''
},
// Set the id attribute so that the collection
// know that it is the old model
idAttribute: 'id'
});
var Coll = Backbone.Collection.extend({
model: MyModel
});
var models = [{
Name: 'A',
id: 1
}, {
Name: 'B',
id: 2
}];
var collection = new Coll(models);
collection.bind('add', function (model) {
alert('addb')
});
collection.bind('remove', function() {
alert('add')
});
models = [{
Name: 'A',
id :1
}, {
Name: 'B',
id: 2
}, {
Name: 'C',
id: 3
}];
collection.add(models);
});
Check Fiddle
它不會嘗試刪除其他2,但主幹很聰明足以確定其中的2個是舊模型,然後將新的模型合併到集合中。
哇......它對我真的很有幫助...非常感謝Sushanth .. :-) – user2058320
@ user2058320 ..不客氣:) –
@ Sushanth--我覺得你甚至不需要設置在你的情況下,idAttribute,因爲你明確地在你的模型中使用id。 –