当我绑定到“all”事件并且某些属性发生更改时,我会收到2个事件:“change:property”事件和简单的“change”事件。因为我总是捕捉属性特定事件,所以我不需要普通的事件。我不能单独绑定所有“change:*”因为我事先不知道可能添加到模型中的所有属性。那么有没有办法继续使用model.bind(“all”,...)并以某种方式摆脱“改变”事件?
P.S。我知道我可以在处理程序中过滤名称,我在询问是否有更标准的方法来过滤或声明模型中的事件,我不知道。
答案 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)。我相信这是处理这种情况最干净的方法 - 至少基于所提供的细节。