web-dev-qa-db-fra.com

Comment recharger l'itinéraire actuel dans Ember.js?

dans Ember.js j'ai l'itinéraire avec le modèle. Pourriez-vous m'aider, lorsque je suis sur la liste de lecture d'itinéraire, comment recharger cet itinéraire (ou définir de nouvelles données sur le modèle) appelé par rappel à partir d'une autre fonction JS? Je regarde la documentation depuis si longtemps, mais cela ne m'aide pas.

App.PlaylistRoute = Ember.Route.extend({
 setupController: function(controller, model) {
  $.getJSON('api/playlist.php?' + Math.random().toString(36), function (data) {
   controller.set('model', data);
  });
 }
});

Merci beaucoup!

32
honzahommer

Depuis un contrôleur, utilisez transitionToRoute :

this.transitionToRoute('playlist', newModel);

À partir d'un itinéraire, utilisez transitionTo :

this.transitionTo('playlist', newModel);

Par exemple, imaginez que vous avez une action sur votre contrôleur

App.PlaylistController = Ember.ArrayController.extend({
 actions: {
   grabNewModel: function(){
     //get some new model
     this.transitionToRoute('playlist', newModel);
   }
 }
});
8
Kingpin2k

Il semble que la solution dans la réponse ne fonctionnera pas pour l'itinéraire actuel. J'ai eu le même problème et j'ai essayé la solution ici et cela a fonctionné.

http://discuss.emberjs.com/t/refresh-current-view-page-after-language-change/4291/5#post_5

Sur votre route.

actions: {
  sessionChanged: function() {
    this.refresh();
  }
}

et dans votre contrôleur.

observeSession: function() {
  this.send("sessionChanged");
}.observes("session.isAuthenticated"),
73
Atsuhiro Teshima

Il y a deux façons de procéder.

L'une consiste à écrire une action dans l'itinéraire de la liste de lecture et à appeler this.refresh () à l'intérieur. Pour plus d'informations, vous pouvez visiter la méthode Ember Guide refresh pour l'itinéraire.

L'autre moyen est dans votre contrôleur en fonction de la situation lorsque vous devez recharger votre itinéraire

this.get('target.target.router').refresh();

l'un des deux vous aiderait à rafraîchir votre itinéraire.

Une petite note de méthode de rafraîchissement ci-dessous à partir des guides ember:

Actualisez le modèle sur cet itinéraire et tous les itinéraires enfants, en tirant les crochets beforeModel, model et afterModel de la même manière que les itinéraires sont entrés lors de la transition à partir d'un autre itinéraire. Les paramètres de route actuels (par exemple, article_id) seront transmis aux crochets de modèle respectifs, et si un modèle différent est renvoyé, setupController et les crochets de route associés se déclencheront également.

8
Sumit