簡體   English   中英

在backbone.js中收聽集合的change事件時,如何判斷哪個模型發生了變化

[英]How can I tell which model changed when listening to the change event of a collection in 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);
        }
    });

我如何知道集合中哪個模型已更改?

精細手冊

活動目錄

這是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?');​​​​​​​​​​

"change"處理程序的model參數將是包裝{ id: 4, ... }model參數。

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

我應該看起來有點難。

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

但是接受的答案是我在尋找並且在文檔中找不到的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM