타일 컬렉션이 있습니다. 응용 프로그램은 수집을 시작하면 서버에서 페치와 클론은 MdApp.TilesCollection
객체의 collection
속성에 할당됩니다 :백본 : 두 컬렉션을 모두 동기화하십시오.
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
의 모델이 추가되거나 수정 될 때 해당 복제본에 대한 특정 변경을 수행하려고합니다. 물론 뭔가가 바뀔 때마다 새 컬렉션을 만들어 속성에 할당 할 수 있지만 컬렉션이 상당히 큰 경우 매우 비효율적 일 수 있습니다. 누구나 어떤 힌트 나 해결책을 버릴 수 있습니까?