javascript - 在 backbone.js 中监听集合的更改事件时,如何判断哪个模型发生了变化

标签 javascript backbone.js

我在 backbone 中创建了两个集合,我想将第一个集合绑定(bind)到第二个集合的模型更改事件。

    var ProjectUserList = Backbone.Collection.extend({

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

    });

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

第二个集合包含来自第一个的绑定(bind)更改事件:

    var FileList = Backbone.Collection.extend({

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

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

我如何知道集合中的哪个模型发生了变化?

最佳答案

来自fine manual :

Catalog of Events

Here's a list of all of the built-in events that Backbone.js can fire. You're also free to trigger your own events on Models and Views as you see fit.

  • [...]
  • "change" (model, options) — when a model's attributes have changed.

所以 "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/

关于javascript - 在 backbone.js 中监听集合的更改事件时,如何判断哪个模型发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779386/

相关文章:

jquery/jqueryui/jquerymobile 在backbone.js 应用程序中加载速度不够快

javascript - 从自制数据库类中查询

javascript - 更改同级组件 Vue.JS 2.0 中组件数据的状态

Javascript 单元测试和重构(使用 Angular js 框架)

javascript - WebStorm 6 中的 Closure Compiler 注释,如何使用 Record Types?

javascript - 图像中的背景颜色(firefox)

javascript - 如何使用 jQuery 部分更新 DOM

javascript - Angularjs 路由与 Backbonejs 路由

javascript - 将 require.js 与独特的 CDN 结合使用

javascript - 按结束年份和开始年份排序