2017-03-09 1 views

Répondre

4

Si vous renvoyez un objet normal, alors le hook du modèle n'attendra pas que les Promises se résorbent, il reviendra donc immédiatement.

model: function() { 
     return { 
      "first-levels":this.get('store').findAll('student') 
     }; 
    } 

Mais si vous revenez comme le dessous, puis crochet de modèle attendra promesse de résoudre,

model: function() { 
    return this.get('store').findAll('student'); 
} 

Note: findAll va obtenir le résultat du magasin et retourner immédiatement et en arrière-plan, il demandera l'adaptateur pour le récupérer et mettre à jour le magasin. Ce comportement peut être contrôlé en utilisant this.get('store').findAll('student',{reload:true}) Pour plus de détails, référez-vous findAll api guide

+0

Pour autant que je sais que les deux se ressemblent (façons dont vous avez retourner le modèle), car dans les deux cas, nous retournons finalement this.get ('store'). findAll ('étudiant'); seul le format est différent. (ex: lorsque vous l'appelez depuis le guidon, le premier appelait comme model.first-levels puis sera égal au modèle dans la seconde manière d'appeler) – Prageeth

+1

Lisez cette explication du guide des braises https: //guides.emberjs .com/v2.11.0/routing/specifier-a-routes-model/'En règle générale, le hook du modèle doit renvoyer un enregistrement Ember Data, mais il peut également renvoyer n'importe quel objet de promesse (les données Ember sont des promesses), ou un JavaScript simple objet ou tableau. Ember attendra que les données aient fini de se charger (jusqu'à ce que la promesse soit résolue) avant de rendre le modèle. – kumkanillam

+0

cela signifie-t-il simplement que j'appelle this.get ('store'). FindAll ('étudiant') c'est toujours un appel asynchrone où il s'exécutera en arrière-plan, mais jusqu'à ce que cette extraction de données soit terminée (jusqu'à ce que la promesse soit résolue), le modèle ne sera pas rendu. – Prageeth