Frage

Ich versuche, eine Authentifizierung in meiner Emberjs -Anwendung zu erstellen. Nachdem der Benutzer eingeloggt hat, speichere ich die Benutzer -ID und ein Token mithilfe lokaler Speicher. Dies funktioniert wie geplant. Ich habe dann eine Einrichtung berechnete Immobilien erstellt, um festzustellen, ob ein Spieler angemeldet ist.

MyApp.ApplicationController = Ember.Controller.extend

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

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

Wie Sie sehen können, holen Sie nur die Daten von meinem Authmanager. Jetzt ist mein großes Problem, dass diese berechneten Eigenschaften nicht aktualisiert werden, auch wenn sich die Apikey -Änderungen ändern. Also habe ich versucht, es zu debuggen.

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

Zunächst ist der Apikey undefiniert, aber nachdem der Benutzer geladen wurde, ist die Apikeys festgelegt, aber die Eigenschaft sieht diese Änderung nicht fest.

Dies ist die Ausgabe des Codes.

enter image description here

Wie Sie sehen können, ändert sich die Apikeys, aber "etwas hat sich geändert" nur einmal gedruckt?

Was mache ich falsch?

War es hilfreich?

Lösung

Ich denke, dein Problem ist, dass die AuthManager beginnt mit einem Großbuchstaben, wenn Sie verwenden @set('AuthManager.accessToken', ...) Ember sucht den a globalen Weg, wie window.AuthManager.accessToken Anstatt von controllerInstance.AuthManager.accessToken Daher refaktor Ihren Code, um es einfach zu verwenden authManager.

setInterval mehrmals auslösen, weil es ein Timer ist, der wiederholt ausgeführt wird, bis clearInterval wird aufgerufen, mit dem zurückgegebenen Ausweis von setInterval

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top