2017-04-04 11 views
0

私は今ember jsです。コントローラのオブザーバで現在のルートインスタンスが必要です。私は多くのリンクを試して、多くを検索しましたが、オブザーバーメソッドではルートインスタンスを取得できませんでした。 コードがあります。オブザーバで現在のルートインスタンスを取得できません。

activeStagesChanged: Ember.observer('activeStages.[]', function() { 
    let self = this; 

    Ember.run.scheduleOnce('afterRender', function() { 
     initCustomScrollbar('#status_timeline_box'); 

     self.handleAppStages(self.get('model'), self.get('currentUser.isConfirmAppStageChange'), 
      Ember.getOwner(self).lookup('controller:application')); 
    }); 
    }) 

Ember.getOwner(自己).lookup(「コントローラー:アプリケーション」)これは私がルートオブジェクトを返すために仮定コードです。

+0

ユースケースのいくつかの代替案が存在する可能性があるので、オブザーバのルートインスタンスにアクセスする理由や使用例を知っておくとよいでしょう。 – kumkanillam

+0

これはruby on railsアプリケーションであり、私たちはフロントエンド技術としてemberを使用しています。私はコールバックにこのルートを送信しているいくつかのアクションでルートを更新するシンプルなjsです。 – wasipeer

答えて

1

あなたはそれが現在のコントローラのルートと親ルートを呼び出し、ためになりますthis.send('refreshFromCont')を呼び出すことができます内部のコントローラのオブザーバーからは、ルート・ファイルで

actions:{ 
refreshFromCont(){ 
    this.refresh(); 
} 
} 

をアクションrefreshFromContを定義することができます。

+0

これは動作しています。私は行動からこれを返す。それは書き込みのアプローチですか? – wasipeer

+0

@wasipeerはいそれはafaikです。おそらく、あなたの貴重なフィードバックや異なるアプローチ/答えを提供するまでに、他の人がチャイルドするまでこの答えのマークを外すことができます。 – kumkanillam

関連する問題