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

时间:2013-07-30 21:50:05

标签: javascript backbone.js

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

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

2 个答案:

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