在backbone.js中,除了简单的“更改”事件之外,我怎样才能捕获所有事件?

时间:2012-01-24 16:37:34

标签: javascript backbone.js

当我绑定到“all”事件并且某些属性发生更改时,我会收到2个事件:“change:property”事件和简单的“change”事件。因为我总是捕捉属性特定事件,所以我不需要普通的事件。我不能单独绑定所有“change:*”因为我事先不知道可能添加到模型中的所有属性。那么有没有办法继续使用model.bind(“all”,...)并以某种方式摆脱“改变”事件?

P.S。我知道我可以在处理程序中过滤名称,我在询问是否有更标准的方法来过滤或声明模型中的事件,我不知道。

2 个答案:

答案 0 :(得分:2)

不幸的是,唯一的方法是手动添加过滤器

ModelA = Backbone.Model.extend({
  initialize: function() {
    this.bind('all', this.onChange, this);
  },

  onChange: function() {
    //apply your filter
  }
});

答案 1 :(得分:2)

你不能只使用change事件,然后通过访问changedAttributes方法检查已更改的属性(在传播更改事件期间,它将返回仅包含属性的哈希值在此更改事件期间发生了变化 - see more here)。我相信这是处理这种情况最干净的方法 - 至少基于所提供的细节。