Вопрос

Я пытаюсь создать некоторую аутентификацию в моем приложении Emberjs, поэтому после того, как пользователь вошел в систему, я сохраняю идентификатор пользователя и токен с использованием локального хранилища. Это работает так же, как и запланировано, я затем создал настройки вычисленных свойств для помощи определить, вошли ли игроки.

MyApp.ApplicationController = Ember.Controller.extend

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

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

Как вы можете видеть, это просто извлечь данные из моего Authmanager. Теперь моя большая проблема заключается в том, что эти вычисленные свойства не обновляются, даже если меняется Apikey. Поэтому я попытался отладить это.

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

Сначала Apikey не определен, но после загрузки пользователя Apikeys установлено, но свойство не видит этого изменения.

Это вывод кода.

enter image description here

Как вы можете видеть, что Apikeys меняется, но «что -то изменилось на», печатается только один раз?

Что я делаю не так?

Это было полезно?

Решение

Я думаю, что ваша проблема в том, что AuthManager начинается с заглавной буквы, когда вы используете @set('AuthManager.accessToken', ...) Ember поищите глобальный путь, как window.AuthManager.accessToken вместо controllerInstance.AuthManager.accessToken Так что рефактор вашего кода для использования просто authManager.

SetInterval запускается несколько раз, потому что это таймер, который неоднократно выполняется, пока clearInterval вызывается, с возвращенным удостоверением личности от setInterval

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top