Question

J'essaie de construire une authentification dans mon application Emberjs, donc après que l'utilisateur s'est connecté, j'enregistre l'ID utilisateur et un jeton à l'aide de stockage local. Cela fonctionne comme prévu, j'ai ensuite construit une configuration de propriétés calculées pour aider à déterminer si un joueur s'est connecté.

MyApp.ApplicationController = Ember.Controller.extend

  currentUser: (->
    @AuthManager.get('apiKey.user')
  ).property('AuthManager.apiKey')

  isAuthenticated: (->
    @AuthManager.isAuthenticated
  ).property('AuthManager.apiKey')

Comme vous pouvez le voir, il suffit de récupérer les données de mon authManager. Maintenant, mon gros problème est que ces propriétés calculées ne mettent pas à jour, même si les changements apikey. J'ai donc essayé de le déboguer.

  currentUser: (->
    @AuthManager.get('apiKey.user')
  ).property('AuthManager.apiKey')

  isAuthenticated: (->
    #@AuthManager.isAuthenticated
    console.log "Something changed to " + @get('AuthManager.apiKey.accessToken')

    self = @
    setInterval ->
      console.log self.get('AuthManager.apiKey.accessToken')
    , 1000
  ).property('AuthManager.apiKey.accessToken')

Tout d'abord, l'Apikey n'est pas défini, mais une fois l'utilisateur chargé, les Apikeys sont définis, mais la propriété ne verra pas ce changement.

Ceci est la sortie du code.

enter image description here

Comme vous pouvez le voir, les Apikeys changent, mais "quelque chose de changé pour" n'est imprimé qu'une seule fois?

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Je pense que votre problème est que le AuthManager commence par une majuscule, lorsque vous utilisez @set('AuthManager.accessToken', ...) Recherche en or le chemin mondial, comme window.AuthManager.accessToken à la place de controllerInstance.AuthManager.accessToken Alors refacteur votre code à utiliser juste authManager.

setterval Déclencher plusieurs fois, car c'est une minuterie qui s'exécute à plusieurs reprises jusqu'à ce que clearInterval est appelé, avec l'ID retourné de setInterval

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top