2014-11-21 85 views
0

我正在使用Backbone.Layoutmanager.js進行Backbone項目如何在不重新渲染的情況下使用Layoutmanager對嵌套視圖進行重新排序/排序?

我得到了一個帶有嵌套ReceiverViews的ListView。

我的集合更新無序 - 我想排序這些意見,但我不想重新呈現整個集合。 (因爲我在舊視圖內部丟失了舊的數據/事件處理程序/圖形實例。)

如何解決?

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(); 
} 

回答

0

您不需要手動調用排序方法。學習一下吧: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); 
} 

希望這有助於

相關問題