当其中的所有模型具有分配给参数的相同值时,是否可以让Backbone Collection触发事件?
例如,集合中的所有模型都可以从以下开始:
model.value = false;
我希望该集合在所有模型都
时触发事件model.value = true;
答案 0 :(得分:1)
默认情况下,backbone不会将此作为功能提供,但您可以检查所有模型是否具有相同的属性,然后触发自定义事件。
if(this.collection.length === this.collection.where({value: true}).length)
{
this.collection.trigger('synchronized');
}
每次更改"值时,都必须执行此检查。属性。
答案 1 :(得分:1)
这是一种可行的方法:
// Model
var m = Backbone.Model.extend({
initialize: function(){
this.on("change", this.publish)
},
publish: function(){
this.trigger("changed");
}
});
// Collection
var c = Backbone.Collection.extend({
model: m,
initialize: function(){
this.on("changed", this.check);
},
check: function(){
console.log(this.length === this.where({value: true}).length);
}
});
var m1 = new m();
var m2 = new m();
var c1 = new c([m1, m2]);
m1.set("value", true);
m2.set("value", true);