Как программно переходить между маршрутами с помощью нового маршрутизатора Ember.js
Вопрос:
Как вы программно переходите на новый маршрут, используя новый маршрутизатор Ember.js?
Фон / КонтекстС помощью старого маршрутизатора Ember.js вы можете программно переходить между маршрутами / состояниями, используя маршрутизатор.send
метод:
//OLD Router Syntax
App = Ember.Application.create({
Router: Ember.Router.extend({
root: Ember.Route.extend({
aRoute: Ember.Route.extend({
route: '/',
moveElsewhere: Ember.Route.transitionTo('bRoute')
}),
bRoute: Ember.Route.extend({
route: '/someOtherLocation'
})
})
})
});
App.initialize();
Программный переход:
App.get('router').send('moveElsewhere');
Учитывая новый маршрутизатор Ember.js (ниже), как мы можем сделать то же самое?
//NEW Router Syntax
App.Router.map(function(match) {
match('/').to('aRoute');
match('/someOtherLocation').to('bRoute');
});
Работа вокруг (плохое решение?)Это может'не так ли?
window.location = window.location.href + "#/someOtherLocation";
Решения, которые неКажется, что работает с новым маршрутизатором:1) вызываяsend
метод наApp.router
пример
> App.router.send("moveElseWhere")
TypeError: Cannot call method 'send' of undefined
2) Явное объявление маршрута и установка события
App.ARoute = Ember.Route.extend({
events: {
moveElseWhere: function(context){
this.transitionTo('bRoute');
}
}
);
App.UploadRoute.moveElseWhere()
TypeError: Object (subclass of Ember.Route) has no method 'moveElseWhere'
Примечание: на момент написанияДокументация по маршрутизатору Ember.js до сих пор относится к старому маршрутизатору, где какEmber.js Руководство по маршрутизатору относится к новому роутеру