0

受け入れまたは拒否されたときにメソッドを呼び出すログインコントローラーがあります。拒否されたコードのスニペットを次に示します。

authFailed: function() {
  var c = App.__container__.lookup("controller:login");
  c.set('errorMessage', 'Authentication Failed');
}

ハックであることは知ってい__container__ますが、最近まで機能していました。今日、ember-app-kit を使用してプロジェクトを開始しましたが、これが機能しなくなっていることに気付きました。コントローラーインスタンスを取得する正しい方法は何ですか?

アップデート:

このコントローラーはそれ自体を参照することに注意してください。つまりauthFailed、認証要求の後に ajax コールバックから呼び出されるログイン コントローラーが含まれています。

4

1 に答える 1

2

jquery ajaxを使用している場合は、を使用してコントローラーにコンテキストオプションを設定できるため、メソッドcontext: thisのコールバックはコントローラーインスタンスのようになります。thenthis

おそらく、次のようなものがあります。

App.LoginController = Ember.ObjectController.extend({
  actions: {
    authenticate: function() {
      var username = ... 
      var password = ...
      Ember.$.ajax('user/auth', { data: { username: username, password: password }, context: this }).then(this.authSuccess, this.authFailed);
    }
  },
  authFailed: function() {
    this.set('errorMessage', 'Authentication Failed');
  },
  // more code ...
});
于 2013-11-04T14:52:50.200 に答える