0

次のようなコントローラーを指定します。

App.SignInController = Ember.Controller.extend
  authenticated: false
  authenticatedDidChange: (() =>
    console.log @get('authenticated')
  ).observes('controller.authenticated')

これはうまくいかないようですので、オブザーバーがどのように機能するかを理解してはいけません。controller.authenticatedにオブザーバーを作成することになっていると思います。ただし、電話をかけると@set("authenticated", true)何も記録されません。

更新:無駄に置き換えcontroller.authenticatedてみました。App.signInController.authenticated

私は何が欠けていますか?

4

1 に答える 1

1

最終的に、QuoraでこのYehuda Katzの答えに出くわしました.

App.friendsController = Ember.ArrayProxy.extend({
  contentDidChange: function() {
    // stuff here
  }.observes('content')
});

この回答を確認した後、observes呼び出しではプロパティの名前のみを指定するcontrollerか、App.signInController接頭辞を指定しないことに気付きました。上記のソリューションを変更するとobserves('authenticated')うまくいきます。

App.SignInController = Ember.Controller.extend
  authenticated: false
  authenticatedDidChange: (() ->
    console.log @get('authenticated')
  ).observes('authenticated')
于 2012-10-27T17:06:10.783 に答える