我正在尝试操作挂钩http://docs.strongloop.com/display/public/LB/Operation+hooks
以下是我在应用代码中所做的事情:
mymodel.observe('before save', doSomething);
//after some time elapses or based on an event we want to change the behaviour
mymodel.observe('before save', doSomethingElse);
var doSomething = function (ctx, next) {
//do something
next();
};
var doSomethingElse = function (ctx, next) {
//do something else
next();
};
当我测试这段代码时,我发现总是执行doSomething,这让我想知道观察者函数是否只能在每个模型中注册一次,还是一个bug?
如果按照设计,你能告诉它背后的原因吗?
答案 0 :(得分:2)
免责声明:我是LoopBack的核心开发人员,也是Operation hooks的作者。
经过一段时间或基于我们想要改变行为的事件
Operation钩子不支持取消注册处理程序功能。每次调用observe()
都会将处理程序添加到触发挂钩时调用的方法列表中。
当我测试这段代码时,我发现总是执行doSomething,这让我想知道观察者函数是否只能在每个模型中注册一次,还是一个bug?
您可以注册多个观察者。注册doSomething
后,将始终调用它。当您注册doSomethingElse
时,doSomething
通过next()
返回后也会调用它。
答案 1 :(得分:1)
现在,您可以使用clearObservers
方法取消注册所有观察者,并使用removeObserver
方法删除单个观察者。请参阅ObserverMixin documentation.
根据changelog,数据源juggler的2.23.0版本中添加了此功能。