2011-11-25 29 views
22

Tôi có mã sau đây, trong đó tôi ràng buộc thay đổi thành một thuộc tính duy nhất "attribute_1".Cách chính xác ràng buộc nhiều thay đổi thuộc tính đối với mô hình Backbone.js

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    this.bind("change:attribute_1", function() { 
     console.log('changed!'); 
    }); 
    } 
}); 

Làm cách nào để liên kết hai thuộc tính? Điều này không làm việc:

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    this.bind("change:attribute_1, change:attribute_2", function() { 
     console.log('changed!'); 
    }); 
    } 
}); 

Cũng không phải thực hiện điều này:

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    this.bind("change:attribute_1 change:attribute_2", function() { 
     console.log('changed!'); 
    }); 
    } 
}); 

Trả lời

24

Tôi không biết nếu một "số lượng lớn-ràng buộc" chức năng như vậy tồn tại (bạn có thể mở một yêu cầu tính năng cho nó, nó có vẻ hữu ích).

Bạn có thể ràng buộc một cách riêng biệt:

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    var listener = function() { console.log('changed'); }; 
    this.bind("change:attribute_1", listener); 
    this.bind("change:attribute_2", listener); 
    } 
}); 

Hoặc bạn có thể lắng nghe tất cả những thay đổi (và sau đó lọc trong người nghe):

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    var listener = function() { console.log('changed'); }; 
    this.bind("change", listener); 
    } 
}); 
+12

Ngoài ra, 'b ind() 'là có thể thay đổi được:' this.bind (...). bind (...) '. –

+1

Nếu sử dụng một người nghe thông thường, làm cách nào để bạn kiểm tra thuộc tính nào đã thay đổi? –

79

Tính đến Backbone.js 0.9.0, các Chức năng bind() (đã được renamed to on()) hỗ trợ danh sách sự kiện được phân tách bằng dấu cách:

model.on("change:title change:author", ...) 

// equivalent to 

model.bind("change:title change:author", ...) 
+2

Bây giờ, điều này có gọi là gọi lại một lần hoặc nhiều lần cho mỗi thay đổi không? – Sukima

+4

@Sukima Nó gọi một lần cho mỗi thuộc tính đã thay đổi. Nếu tiêu đề thay đổi, hãy kích hoạt một lần. Nếu tác giả thay đổi, hãy kích hoạt một lần. Nếu cả hai tiêu đề và tác giả thay đổi, đầu tiên một lần cho tiêu đề và một lần cho tác giả. –

+2

Bản đồ này với cú pháp listenTo như thế nào? – backdesk

Các vấn đề liên quan