如何知道一个方法是由我通过代码或它的观察者调用



我在视图中有一个方法,就像下面这样。

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')

最新更新