我希望每当我更改模型的任何属性时都激发一个更改事件,但有一个属性除外。这可能吗?除了执行以下操作之外:
model.bind('change:prop1', func);
model.bind('change:prop2', func);
model.bind('change:prop3', func);
etc....
或者,是否有办法从事件处理程序中找出哪个属性触发了更改?
我希望每当我更改模型的任何属性时都激发一个更改事件,但有一个属性除外。这可能吗?除了执行以下操作之外:
model.bind('change:prop1', func);
model.bind('change:prop2', func);
model.bind('change:prop3', func);
etc....
或者,是否有办法从事件处理程序中找出哪个属性触发了更改?
3条答案
按热度按时间iyzzxitl1#
您可以使用
model.bind('change',function() {/*...*/})
,并在函数中使用hasChanged
来检查属性:if(model.hasChanged('propIWantToExclude')) return;
rsl1atfo2#
当'propIWantToExclude'和其他一些属性一起更改时,上面Justin的答案将返回。您可能不想这样做,所以您还应该查看
model.changedAttributes
的大小:icnyk63a3#
响应大卫Tuite回答问题第一部分的请求,您可以设置一个函数来响应“changed”事件,然后在您要忽略的属性未更改时触发一个自定义事件。
此逻辑将触发自定义事件:
'somePropertyOtherThanThePropIWantToExcludeChanged'
(如果未更改属性)。如果更改了多个属性(包括要忽略的属性),则也不会触发自定义事件: