1

テンプレートKbRelatedGroupControllerのヘルパーを介して読み込まれるコントローラー ( ) があります。{{render}}

コントローラーのアクションで、もしそうならthis.get('target')、ページの親コントローラーへの参照を返します ( KbShowController)。

それを呼び出す.targetと、 への参照が得られますがDiscourse.Router、これは私にとっては良くありません。

私が欲しいのは a への参照です。コントローラーから呼び出されたときに Route を生成するはずKbShowRouteなので、それは私が期待したものです。.target

ここで本当に混乱しました。コントローラーから現在のルートへの参照を取得するのが難しいのはなぜですか?

4

1 に答える 1

3

私の見方では、あなたはそうすべきではありません。アクションをルートまでバブルアップさせることができます:

App.KbShowRoute = Ember.Route.extend({
    ...
    actions: {
        something: function() {
            console.log('called second');
        }
    }
});

App.KbShowController = Ember.Controller.extend({
    ...
    actions: {
        something: function() {
            console.log('called first');
        }
    }
});

ドキュメントを参照

あなたは出来る:

  1. アクションの一部をコントローラーで処理し、コントローラーのアクション ハンドラーで何も返さないことでルートにバブリングさせます。
  2. ルートにアクションを処理させ (コントローラーのアクション ハッシュにアクションを追加しないことで)、ルートを使用this.controllerFor(this.routeName).sendAction('..', ...)してコントローラー内の別のアクション (またはアクションの一部) を呼び出します。

これがお役に立てば幸いです。

于 2014-01-09T15:37:12.027 に答える