所有型号的价值相同 - >收集活动

时间:2014-03-03 21:45:36

标签: javascript events backbone.js collections models

当其中的所有模型具有分配给参数的相同值时,是否可以让Backbone Collection触发事件?

例如,集合中的所有模型都可以从以下开始:

model.value = false;

我希望该集合在所有模型都

时触发事件
model.value = true;

2 个答案:

答案 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);