/ / Jak ponownie posortować / zamówić zagnieżdżone widoki za pomocą Layoutmanager bez ponownego renderowania? - javascript, backbone.js, backbone-layout-manager

Jak ponownie posortować / zamówić widoki zagnieżdżone za pomocą programu Layoutmanager bez ponownego renderowania? - javascript, backbone.js, backbone-layout-manager

Pracuję nad projektem Backbone przy pomocy Backbone.Layoutmanager.js

Mam ListView z zagnieżdżonymi odbiornikami.

Moja kolekcja jest aktualizowana nieuporządkowana - chcę posortować te widoki, ALE nie chcę ponownie renderować całej kolekcji. (ponieważ tracę stare wystąpienie obsługi danych / zdarzenia / wykresu w starych widokach).

Jak naprawić ?

  ReceiverListView = Backbone.View.extend({
manage:true,
initialize: function(options){
_.bindAll(this, "renderReceiver","renderMe");
this.vent = _.extend({}, Backbone.Events);
this.collection.on("add", this.renderMe, this);

},
renderMe: function(model1){

this.collection.sort(this.collection.comparator);
this.insertView(new ReceiverView({model: model1})).render();
}

Odpowiedzi:

0 dla odpowiedzi № 1

Nie musisz ręcznie wywoływać metody sortowania. Dowiedz się o tym: http://backbonejs.org/#Collection-sort

initialize: function () {
this.listenTo(this.collection, "sort", _.bind(this.onSortCollection, this));
},

onSortCollection: function (collection) {
var views = {};

_.each(this.getViews(), function (view) {
if (view.model) views[view.model.cid] = view;
});

collection.each(function (model) {
var view = views[model.cid];

if (view) this.el.appendChild(view.el);
}, this);
}

Mam nadzieję że to pomoże