2013-07-29 35 views
6

Tôi muốn ghi đè phương thức thiết lập đường trục để bất cứ khi nào tôi đặt giá trị cho xương sống Mô hình cuộc gọi lại được đăng ký trên thuộc tính đó được gọi mà không kiểm tra cùng giá trị trước đó của thuộc tính đó.Ghi đè backbone 'set' phương pháp

var model = Backbone.Model.extend({ 
    defaults : { 
     prop1 : true 
    } 
}); 

var view = Backbone.View.extend({ 
    initialize : function(){ 
     this.listenTo(this.model,"change:prop1", this.callback); 

    }, 
    callback : function(){ 
     // set is called on prop1 
    } 
}); 

var m1 = new model(); 
var v1 = new view({model:m1}); 
m1.set("prop1",true); // It doesn't trigger callback because I'm setting the same value to prop1 

Trả lời

19

Bạn có thể viết một phương pháp mới trong mô hình xương sống thiết lập như thế này:

var model = Backbone.Model.extend({ 
    defaults: { 
     prop1: true; 
    }, 

    // Overriding set 
    set: function(attributes, options) { 
     // Will be triggered whenever set is called 
     if (attributes.hasOwnProperty(prop1)) { 
      this.trigger('change:prop1'); 
     } 

     return Backbone.Model.prototype.set.call(this, attributes, options); 
    } 
}); 
Các vấn đề liên quan