2012-12-08 75 views
3

我已經在backbone中創建了兩個集合,並且想要將第一個集合綁定到來自第二個集合的模型更改事件。如何判斷在偵聽backbone.js中某個集合的更改事件時更改了哪個模型

var ProjectUserList = Backbone.Collection.extend({ 

     model: app.projectUser, 
     url: config.base + 'api/project/project_users' 

    }); 

    //instantiate 
    app.projectUserList = new ProjectUserList(); 

其次收集與約束更改事件從第一:

var FileList = Backbone.Collection.extend({ 

     initialize: function() { 
      app.projectUserList.on('change', this.updateShare); 
     }, 

     updateShare: function() { 
      console.log(this); 
     } 
    }); 

我怎麼知道哪種模式集合中有哪些變化?

回答

4

fine manual

活動

的目錄下面是所有的列表內置在Backbone.js的可以觸發事件。如果您認爲合適,您還可以在模型和視圖上自由觸發自己的事件。

  • [...]
  • 「變」(模型,期權) - 當一個模型的屬性發生了變化。

所以第一個參數"change"事件處理程序將是最初觸發事件的模型。

例如,給定簡單的設置是這樣的:

var M = Backbone.Model.extend({}); 
var C = Backbone.Collection.extend({ 
    model: M 
}); 
var c = new C([ 
    { id: 1, s: 'where' }, 
    { id: 2, s: 'is' }, 
    { id: 3, s: 'pancakes' }, 
    { id: 4, s: 'house' } 
]); 
c.on('change', function(model, options) { /*...*/ }); 
c.at(​​​​​​​​​​​​​​​​​3).set('s', 'house?');​​​​​​​​​​ 

model參數爲"change"處理程序將是一個包裹{ id: 4, ... }

演示:http://jsfiddle.net/ambiguous/aE2XE/

1

我應該看起來有點難。

上述示例中updateShare函數的上下文中的對象'this'包含一個數組'models',其中包含集合中的所有模型,但觸發change事件的數組的屬性爲'_changing:true 」。

但接受的答案是我在找的東西,在文檔中找不到。

相關問題