0

次のようなビューにメソッドがあります。

testMethod : function() {
   //run code
}.observes('property1')

このメソッドは、呼び出しによって直接トリガーするか、property1 オブザーバーによってトリガーすることができます。メソッド内で、呼び出しがどのようにトリガーされているかを知ることは可能ですか。ありがとう

4

2 に答える 2

1

オブザーバーが呼び出されると、コントローラー オブジェクトと、オブザーバーを変更してトリガーした監視対象プロパティの 2 つの引数を受け取ります。

したがって、次のように確認できます。

testMethod : function() {
    if(arguments.length === 2 && arguments[1] === 'property1'){
        // you're triggered by property observer
    } else {
        // triggered directly
    }
}.observes('property1')

もちろん、これは発信者によってスプーフィングされる可能性があります..

于 2013-03-04T13:39:34.813 に答える
0

私はこれに出くわしましたが、そうする方法が見つかりませんでした。私は最終的に次のようなことをしました:

testMethod : function() {
   //run code
},
propertyObserver : function(){
   this.testMethod();
}.observes('property1')
于 2013-03-04T13:16:27.610 に答える