Vra

Ek probeer 'n bietjie verifikasie in my EMBERJS -toepassing opgebou het, so nadat die gebruiker aangemeld het, stoor ek die gebruikers -ID en 'n teken met plaaslike berging. Dit werk soos beplan, ek het dan 'n opgestelde berekende eiendomme opgebou om te help bepaal of 'n spelers aangemeld het.

MyApp.ApplicationController = Ember.Controller.extend

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

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

Soos u kan sien, haal dit net die gegewens van my Authanager. Nou is my groot probleem dat hierdie berekende eienskappe nie opdateer nie, selfs nie as die apikey verander nie. Dus het ek probeer om dit te ontfout.

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

Eerstens is die apikey ongedefinieerd, maar nadat die gebruiker gelaai is, is die Apikeys ingestel, maar die eiendom sien nie hierdie verandering nie.

Dit is die uitset van die kode.

enter image description here

Soos u kan sien dat die Apikeys verander, maar 'iets verander na' word slegs een keer gedruk?

Wat doen ek verkeerd?

Was dit nuttig?

Oplossing

Ek dink u probleem is omdat die AuthManager begin met 'n hoofletter, wanneer u dit gebruik @set('AuthManager.accessToken', ...) Ember lookup the a Global Path, soos window.AuthManager.accessToken in plaas van controllerInstance.AuthManager.accessToken Dus refaktor u kode om net te gebruik authManager.

Set Interval sneller verskeie kere, want dit is 'n timer wat herhaaldelik uitvoer tot clearInterval word genoem, met die terugbesorgde ID van setInterval

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top