Как перезагрузить текущий маршрут в 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);
});
}
});
Спасибо большое!
Ответы
Ответ 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 и связанные с ней маршруты.