2016-04-26 8 views
1

私はいくつかのネストされたルートを持っています。そのうちの1つでは、モーダル(モーダルと呼ばれる別のコンセントに接続されている)を開くことができます。EmberJs - モーダルからのバブルアップアクション

ユーザーがテキストを入力して[OK]をクリックすると、アクション( 'valueUpdated')がMyrouteChildControllerに送信されます。しかし、私はまた、このイベントをMyrouteControllerまでバブリングする必要がありますが、動作しません。私は、アクションハンドラでtrueを返すようにして、手動で@sendを呼び出してみました。

自分のテンプレートからMyrouteChildControllerのアクションを呼び出すと、それは機能します。

http://emberjs.jsbin.com/lotinaw/edit?html,js,output

任意の助けいただければ幸いです。

答えて

0

だけでなくすることができますが、あなたはまた、コントローラを注入し、Ember.inject.controller()を使用してそれらにアクションを送信して、これはあなたがアクションを送信できるようになる

export default Ember.Component.extend({ 
    mycontroller: Ember.inject.controller('mycontroller'), 
    funcUsingControllerToSendAction(args){ 
     let mycontroller = this.get('mycontroller'); 
     mycontroller.send('myaction',args); 
    } 
}); 

に進む可能性があるEmber.inject.service()を使用してcomponentsとエンバーでcontrollersinjectサービス他のコントローラコンテキストへの引数を使用します。

+0

コントローラを注入するときは、親ルートのコントローラではなく、その特定のルートにアクセスしていない場合は、初期化されません。 – locks

+0

@locksコントローラが初期化されているかどうかを確認する方法はありますか?コントローラーが初期化されているかどうかをチェックするために 'mycontroller instanceof Ember.Controller'チェックが有効でしょうか? – canufeel

+0

あなたがそれを注入したので、それはコントローラのインスタンスになります。 – locks

関連する問題