Domanda

Sto cercando di creare un po 'di autenticazione all'interno della mia applicazione Emberjs, quindi dopo che l'utente ha effettuato l'accesso, salvo l'ID utente e un token utilizzando l'archiviazione locale. Funziona come previsto, ho quindi creato una configurazione di proprietà calcolate per aiutare a determinare se un giocatore ha effettuato l'accesso.

MyApp.ApplicationController = Ember.Controller.extend

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

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

Come puoi vedere, basta prendere i dati dal mio Authmanager. Ora il mio grosso problema è che queste proprietà calcolate non si aggiornano, anche se i cambiamenti di Apikey. Quindi ho provato a debug.

  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')

Innanzitutto l'apikey è indefinito, ma dopo il caricamento dell'utente, gli Apikeys sono impostati, ma la proprietà non riesce a vedere questa modifica.

Questo è l'output del codice.

enter image description here

Come puoi vedere i cambiamenti di Apikeys, ma "qualcosa cambiato" è stampato solo una volta?

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Penso che il tuo problema sia perché il AuthManager inizia con una lettera maiuscola, quando si usa @set('AuthManager.accessToken', ...) Cerca un percorso globale, come window.AuthManager.accessToken invece di controllerInstance.AuthManager.accessToken Quindi refactor il tuo codice da utilizzare solo authManager.

setInterval attivare più volte, perché è un timer che esegue ripetutamente fino a clearInterval è chiamato, con l'ID restituito da setInterval

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top