Pergunta

Estou tentando criar alguma autenticação no meu aplicativo Emberjs; portanto, depois que o usuário estiver conectado, salvo o ID do usuário e um token usando o armazenamento local. Isso funciona conforme o planejado, construo uma configuração de propriedades de configuração para ajudar a determinar se um jogador fez login.

MyApp.ApplicationController = Ember.Controller.extend

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

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

Como você pode ver, apenas busque os dados do meu AuthManager. Agora, meu grande problema é que essas propriedades calculadas não atualizam, mesmo as mudanças apikey. Então eu tentei depurar.

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

Primeiro, o Apikey é indefinido, mas depois que o usuário é carregado, o APIKEYS está definido, mas a propriedade não consegue ver essa alteração.

Esta é a saída do código.

enter image description here

Como você pode ver, as mudanças de Apikeys, mas "algo mudou para" é impresso apenas uma vez?

O que estou fazendo errado?

Foi útil?

Solução

Eu acho que seu problema é porque o AuthManager começa com uma letra maiúscula quando você usa @set('AuthManager.accessToken', ...) Pesquisa de brasa, o caminho global, como window.AuthManager.accessToken ao invés de controllerInstance.AuthManager.accessToken Portanto, refatore seu código para usar apenas authManager.

setInterval acionar várias vezes, porque é um cronômetro que é executado repetidamente até clearInterval é chamado, com o ID devolvido de setInterval

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top