J'essaie de faire quelques trucs de base avec Ember Model mais je rencontre des comportements étranges avec des promesses. Je ne suis pas sûr de comprendre très bien comment ça fonctionne.Problème avec les promesses du modèle Ember
Alors, j'ai cet itinéraire:
App.ProfilesIndexRoute = Ember.Route.extend {
redirect: ->
App.Profile.fetch().then (profiles) ->
console.log profiles.get('length')
@transitionTo 'profile', profiles.get('firstObject')
}
Je veux simplement les gens à être redirigés vers /profiles/123
(= le premier profil) lorsqu'ils accèdent /profiles
.
Voici l'adaptateur Profil:
App.Profile.adapter = Ember.Adapter.create {
findAll: (klass, records) ->
$.ajax('/api/users/' + $.cookie('user_id'), {
type: 'get'
headers: {
'Content-Type': 'application/json'
'Authentication-Token': $.cookie('token')
}
dataType: 'json'
}).then (res) ->
profiles = []
// some stuff done here
records.load klass, profiles
}
Quand je vais à /profiles
, voici ce que je vois dans ma console:
0
Transitioned into 'profiles.index'
XHR finished loading: "http://localhost/api/users/456".
0
est le résultat de console.log profiles.get('length')
. Il semble que ça s'appelle avant que l'appel AJAX ait eu la chance de finir. Ce que je devrais avoir dans ma console est quelque chose comme ceci:
Transitioned into 'profiles.index'
XHR finished loading: "http://localhost/api/users/456".
5
Qu'est-ce que je fais mal ici? Quelqu'un here m'a suggéré d'utiliser fetch
au lieu de find
mais cela ne semble pas résoudre mon problème car les choses ne sont pas exécutées dans le bon ordre.
Merci!