У меня есть коллекция плиток. Когда приложение начинает сбор скачивается с сервера и его клон присваиваются collection
свойства MdApp.TilesCollection
объекта:Магистраль: синхронизировать обе коллекции
MdApp.TilesCollection.fetch({
success: function(){
console.log('Tiles collection fetched from server');
console.log(MdApp.TilesCollection);
if(!MdApp.TilesCollection.collection){
MdApp.TilesCollection.collection = new Backbone.Collection(MdApp.TilesCollection.models);
console.log('Made copy of collection in fetched collection instance');
}
},
error: function(){
console.log('Error!Unable to fetch tiles collection from server');
}
});
Это делается для фильтрации:
TilesCollection = Backbone.Collection.extend({
model: MdApp.TileModel,
url : 'api/',
rewriteModel: function(model){
this.set(model);
},
byPrivate : function(){
var filtered = this.collection.filter(function(tile){
return tile.get('private') == '1';
});
console.log('filtered private: ' + filtered);
return filtered;
},
byPublic : function(){
var filtered = this.collection.filter(function(tile){
return tile.get('private') == '0';
});
console.log('filtered public: ' + filtered);
return filtered;
},
byFavourite: function(){
var filtered = this.collection.filter(function(tile){
return tile.get('favourite') == '1';
});
console.log('filtered favourite: ' + filtered);
return filtered;
},
byAsc : function(){
var filtered = this.collection.sortBy(function(tile){
return tile.get('id');
});
console.log('filtered ascending: ' + filtered);
return filtered;
},
byDesc : function(){
var filtered = this.collection.sortBy(function(tile){
return -tile.get('id');
});
console.log('filtered descending: ' + filtered);
return filtered;
},
refilter: function(){
console.log(this.collection);
return this.collection.models;
}
});
То, что я хочу сделать, это держать MdApp.TilesCollection
и MdApp.TilesCollection.collection
в синхронизации. Когда добавляются или изменяются модели MdApp.TilesCollection
, я хочу внести эти изменения в свой клон. Конечно, я могу просто создавать новую коллекцию каждый раз, когда что-то меняется и присваивать ее этому свойству, но она может быть очень неэффективной, когда сбор довольно велик. Кто-нибудь может отказаться от намека или решения?