如果特定字段更改为特定值,是否可以侦听集合中模型的更改?
我知道'change:fieldName'之类的东西存在,我正在寻找类似'changeTo:fieldName = true'的东西
答案 0 :(得分:5)
没有一种“捷径”的方式。您必须收听正常的change
事件,并在您的监听器中查看该值是否已更改为您感兴趣的内容。然后,传播事件,发射新事件或做事。
Backbone.Collection.extend({
initialize: function() {
this.on('change:property', this.onChange);
},
onChange: function(e) {
// sorry for pseudo-code, can't remember syntax by heart, will edit
if (e.newValue == true)
myLogic();
}
}
答案 1 :(得分:1)
您无法侦听显式值,因为在一般情况下这不会很好,但您可以轻松绑定到常规处理程序并基于此运行代码。
var MyCollection = Backbone.Collection.extend({
initialize: function(models, options){
this.on('change:myProperty', this.changeMyProperty_, this);
},
changeMyProperty_: function(model, value){
if (value) this.myPropertyTrue_(model);
},
myPropertyTrue_: function(model){
// Do your logic
}
});