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