2013-02-05 34 views
8

tôi có một cái nhìn mà phải mất một collection như dưới đây:Binding kiện thay đổi Backbone để thuộc tính của mô hình trong một bộ sưu tập

MyView = Backbone.View.extend({ 
    initialize: function() { 
     this.collection.on("change://an attribute of a model in aCollectionToRender", someAction); 
    } 
}); 

var MyViewInstance = new MyView({ 
    collection: aCollectionToRender 
}); 

Về cơ bản, tôi không muốn MyView để nghe cho những thay đổi trên toàn bộ bộ sưu tập, chỉ một thuộc tính duy nhất của mô hình mà bộ sưu tập chứa.

Tôi nhận thấy có một số lựa chọn thay thế như sau:

  1. Tạo quan điểm cho mỗi mô hình của aCollectionToRender và đính kèm .on("change") sự kiện trong những quan điểm. Tôi không muốn làm điều này bởi vì đó không phải là điều đúng để làm cho hoàn cảnh của tôi
  2. Chỉ cần có sự kiện this.collection.on("change") và có bộ lọc xử lý sự kiện dựa trên các yêu cầu của tôi. Điều này ít thanh lịch hơn và nếu Backbone đã cho phép tôi viết bộ lọc sự kiện như tôi đã yêu cầu ở trên, thì đây là mã trùng lặp

Tôi đã tự hỏi liệu có cách nào để viết trình xử lý sự kiện đã lọc hay không. Câu hỏi này cũng có thể là một bản sao; Tôi nhìn nhưng tôi không tìm thấy bất cứ điều gì chính xác như thế này, tuy nhiên, có rất nhiều câu hỏi Backbone

Trả lời

16

Có lẽ tôi hiểu nhầm câu hỏi của bạn, nhưng bạn có thể làm chính xác những gì bạn hiển thị. Hãy xem Backbone documentation.

MyView = Backbone.View.extend({ 
    initialize: function() { 
     this.collection.on("change:attributeName", this.someAction /*function to call*/, this); 
    }, 
    someAction: function(model, value, options){ 
    } 
}); 
+2

Doh! Tôi nghĩ bạn đúng! Vì một số lý do tôi nghĩ khi đó là một bộ sưu tập, 'attributeName' trong' change: attributeName' được gọi là thuộc tính của bộ sưu tập chứ không phải là mô hình. – Jay

+1

ok, nhưng làm thế nào bạn có thể làm điều này: this.collection.on ("thay đổi", chức năng (mô hình, tài sản) {// có được tài sản đã được thay đổi ở đây ...}); ??? –

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