我在视图中有一个方法,就像下面这样。
testMethod : function() {
//run code
}.observes('property1')
该方法既可以通过调用直接触发,也可以由property1观察器触发。是否有可能知道在方法内部,调用是通过哪种方式被触发的。由于
当observer被调用时,它接收2个参数:控制器对象,以及已经改变并触发观察者的observed属性。
你可以这样检查:
testMethod : function() {
if(arguments.length === 2 && arguments[1] === 'property1'){
// you're triggered by property observer
} else {
// triggered directly
}
}.observes('property1')
当然,这可以被调用者欺骗…
我自己偶然发现了这个问题,但没有办法做到这一点。我最终做了这样的事情:
testMethod : function() {
//run code
},
propertyObserver : function(){
this.testMethod();
}.observes('property1')