3

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

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

4

2 回答 2

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

}
于 2013-07-30T22:25:52.837 回答
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
  }
});
于 2013-07-31T05:50:48.047 回答