Подтвердить что ты не робот

Как перезагрузить текущий маршрут в Ember.js?

в Ember.js У меня есть маршрут с моделью. Не могли бы вы мне помочь, когда я нахожусь в плейлисте маршрута, как перезагрузить этот маршрут (или установить новые данные в модель), вызванный обратным вызовом из другой функции JS? Я долго искал документацию, но не помогал мне.

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

Спасибо большое!

4b9b3361

Ответ 1

Из контроллера используйте transitionToRoute:

this.transitionToRoute('playlist', newModel);

Из маршрута используйте transitionTo:

this.transitionTo('playlist', newModel);

Например, представьте, что у вас есть действие на вашем контроллере

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

Ответ 2

Кажется, что решение в ответе не будет работать для текущего маршрута. У меня была такая же проблема, и я попробовал решение здесь, и это сработало.

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

В вашем маршруте.

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

и в вашем контроллере.

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

Ответ 3

Есть два способа сделать это.

Один из них записывает действие в маршрут списка воспроизведения и вызывает this.refresh() внутри него Дополнительную информацию вы можете найти в руководстве Ember Guide refresh для маршрута.

Другим способом является ваш контроллер в зависимости от ситуации, когда вам нужно перезагрузить использование маршрута.

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

любой из двух поможет вам обновить маршрут.

Небольшое примечание о методе обновления ниже из направляющих ember:

Обновите модель на этом маршруте и на любых дочерних маршрутах, запустив кнопки beforeModel, model и afterModel так же, как маршруты будут введены при переходе с другого маршрута. Текущие параметры маршрута (например, article_id) будут переданы соответствующим крючкам модели, и, если будет возвращена другая модель, также будут перезапущены setupController и связанные с ней маршруты.