[英]How can I attach event handler for a collection view in Backbone.js when one of the models is changed?
[英]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
参数。
我应该看起来有点难。
上面示例中updateShare函数上下文中的对象'this'包含一个数组'models',其中包含集合中的所有模型,但触发change事件的对象具有'_changing:true'属性。
但是接受的答案是我在寻找并且在文档中找不到的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.