2013-03-06 2 views
0

Я хочу уничтожить просмотр и сделать другой вид модели. , но я не могу отменить функции, привязанные к модели из старого представления.backbone.js unbind function from model when destroy view

мой тестовый код

View = Backbone.View.extend({ 
    initialize: function(){ 
     this.model.bind('change',this.render); 
    }, 

    destroy_view: function() { 

     //COMPLETELY UNBIND THE VIEW 
     this.undelegateEvents(); 

     this.$el.removeData().unbind(); 

     //Remove view from DOM 
     this.remove(); 
     Backbone.View.prototype.remove.call(this); 
    }, 
}); 

и я сделал новую модель и вид, и я уничтожу вид как этот

view.destroy_veiw(); 
delete view; 

но стил визуализации вызывается, когда модель изменилась

model.triger('change'); 

Я знаю model.unbind(); может решить эту проблему, но она отменит другие функции, я хочу использовать эту модель для другого представления. Как я могу это решить?

ответ

2
var View = Backbone.View.extend({ 

    initialize: function(){ 
     this.listenTo(this.model, 'change', this.render);    
    } 
}); 
+1

я предлагаю 'this.model.on ('изменение', this.render, этот);' (третий аргумент) вместо '_.bindAll (этого);', который может вызвать проблемы [] (https://github.com/documentcloud/backbone/issues/2080) в некоторых случаях, когда расширенный класс ожидает какой-либо другой контекст в каком-либо методе. Также предлагайте использовать 'this.listenTo (this.model, 'change', this.render)' вместо этого, поскольку метод View 'remove' по умолчанию уже вызывает' stopListening'. –