2012-10-27 3 views
0

un contrôleur comme Étant donné:Un contrôleur Ember peut-il être lié à des événements modifiés pour ses propres propriétés?

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

Cela ne semble pas fonctionner, donc je ne dois pas comprendre comment fonctionne les observateurs. Je pense il est censé créer un observateur sur controller.authenticated. Cependant quand j'appelle @set("authenticated", true) rien n'est enregistré. J'ai essayé de remplacer controller.authenticated par App.signInController.authenticated en vain.

Qu'est-ce qui me manque?

+0

La meilleure solution est d'utiliser ce que suggère @ryan. Bien que, s'appuyant sur 'App.signInController.authenticated' pourrait fonctionner, si vous êtes sûr que l'objet App.signInController a été instancié. –

Répondre

1

Finalement, je suis tombé sur an answer ce Yehuda Katz sur Quora.

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

Après avoir examiné cette réponse je remarquai que l'appel observes spécifie uniquement le nom de la propriété sans préfixe controller ou App.signInController. Changer ma solution ci-dessus pour seulement observes('authenticated') fonctionne.

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

Parfaitement juste, comme les propriétés calculées, le 'chemin' des observateurs doit être soit relatif à l'objet courant, soit absolu à partir d'un espace de noms global. –

Questions connexes