2016-10-28 7 views
0

私はオブザーバーを持つEmberコントローラーにプロパティを持っています。これは、最初にページ/ルートにアクセスしたときに呼び出され、値がバインドされているドロップダウンを変更したときにも呼び出されます(期待どおり)。エバーオブザーバー/ルートがロードされるたびにスケジュールを実行

私はページを再訪問し、その値が(ページを出たときと同じ値に)再設定されると、オブザーバーが解雇されますか?

私が必要とする理由は、値が別の関数のフィルタとして使用され、その関数がオブザーバ内で呼び出されるからです。

以前の値と同じ値であってもオブザーバーを発火させる方法はありますか? あるいは、コントローラーがロード/ルート訪問されるたびに、コントローラーから(おそらく実行ループを介して)機能を起動する賢明な方法はありますか?

+0

コントローラーはシングルトンです。 resetControllerまたはsetupControllerを呼び出して、プロパティを(再)設定できます。 – mausinc

答えて

0

setupControllerルートフックでは、controllerという参照があるので、それを使ってオブザーバー関数を呼び出すことができます。

setupController(controller,model){ 
    this._super(...arguments);  
    controller.get('testObserver')(); 
} 
0

私はプロパティを観察するために以下のスタイルを好む。

setupController(controller, model){ 
    if (this.get('somelogic')) { 
     controller.addObserver('yourProperty', controller, this.get('callback')); 
    } 
} 

resetController(controller, isExisting, transition) { 
    if (isExisting) { 
     controller.removeObserver('yourProperty', controller, this.get('callback')); 
    } 
} 
関連する問題