模型上的主干集合更改事件

Backbone collection change event on model

本文关键字:事件 集合 模型      更新时间:2023-09-26

如果将特定字段更改为特定值,是否可以侦听集合中模型的更改?

我知道存在类似"change:fieldName"的东西,我正在寻找类似"changeTo:fieldName=true"的东西

没有"快捷方式"可以做到这一点。您必须侦听正常的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();
    }
}

您不能监听显式值,因为这在一般情况下不会很好地工作,但您可以很容易地绑定到通用处理程序,并在此基础上运行代码。

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
  }
});