如果可能的话,是否可以知道Backbone.Model.set()
是否已更改/未更改任何事件?原因是:如果我使用事件,它将看起来像:
但如果改变不会发生怎么办?我怎么知道的?还有事件处理程序,我需要批准删除它们。例如,如果我这样做,我需要删除处理程序,如果没有发生更改
答案 0 :(得分:1)
这是一个简单的解决方案,它将事件隐藏到一个简单的同步函数中,如果set有效,则返回该函数。
我选择以不同的函数名实现它,但您也可以覆盖默认的set行为。
var M = Backbone.Model.extend({
setThatLetsYouKnow: function(key, value){
var thisSetHasEffect = { flag: false};
this.listenToOnce(this, "change", function(){
thisSetHasEffect.flag = true;
});
this.set(key, value);
return thisSetHasEffect.flag;
}
});
结果是:
var m = new M();
m.setThatLetsYouKnow("key",2)// return true
m.setThatLetsYouKnow("key",2)// reutrn fasle
当然,你需要为所有不同类型的set参数添加支持,这只是Idea。