"Новый" маршрут игнорируется в ember-app-kit
Мое приложение продолжает генерировать маршрут по умолчанию, даже если у меня есть маршрут, явно определенный. Я думаю, что я упускаю из виду соглашение об именах, но поиск в Google, stackruing, обсуждения.emberjs.com и старые ругательства на компьютере еще никуда меня не приводят.
приложение / router.js
var Router = Ember.Router.extend();
Router.map(function(){
this.resource('things', function() {
this.route('new');
});
});
export default Router;
приложение / маршруты / things_new.js
var ThingsNewRoute = Em.Route.extend({
model: function() {
window.console.log('hello hello');
return this.store.createRecord('thing');
}
});
export default ThingsNewRoute;
Посещение http://localhost:8000/#/things/new
шаблон хорошо отрисовывается и ошибок нет. Выход из журнала Ember:
generated -> route:application Object {fullName: "route:application"} ember.js:415
generated -> route:things Object {fullName: "route:things"} ember.js:415
generated -> route:things.new Object {fullName: "route:things.new"} ember.js:415
generated -> controller:application Object {fullName: "controller:application"} ember.js:415
Rendering application with default view <(subclass of Ember.View):ember267> Object {fullName: "view:application"} ember.js:415
generated -> controller:things Object {fullName: "controller:things"} ember.js:415
Rendering things with default view <Ember._MetamorphView:ember283> Object {fullName: "view:things"} ember.js:415
generated -> controller:things.new Object {fullName: "controller:things.new"} ember.js:415
Rendering things.new with default view <Ember._MetamorphView:ember293> Object {fullName: "view:things.new"} ember.js:415
Transitioned into 'things.new' ember.js:415
Ember Debugger Active
Проблема заключается в следующем:
generated -> route:things.new Object {fullName: "route:things.new"} ember.js:415
Это не должно генерировать это, потому что я определяю это. Есть ли какое-то соглашение об именах файлов, которому я не следую?
Также глядя на Ember Inspector в Chrome. В разделе "Собственные свойства" в разделе ThingsNewRoute:
routeName: things.newSend
controller: (generated things.new controller)
lastRenderedTemplate: things.new
teardownOutletViews: [ function() { ... } ]
2 ответа
В ember-app-kit для правильного выбора маршрутов распознавателем вы должны поместить их в подкаталоги.
Например, для вашего случая использования, имеющего карту маршрутизатора, такую как:
Router.map(function(){
this.resource('things', function() {
this.route('new');
});
});
Структура каталогов должна быть:
app/
...
routes/
things/
new.js
...
Поскольку распознаватель ожидает маршрут ThingsNewRoute
быть найденным в app/routes/things/new.js
Надеюсь, поможет.
ThingsNewRoute
должно быть свойством объекта вашего приложения. Таким образом, объявление будет выглядеть так:
App.ThingsNewRoute = Em.Route.extend({
....
})
Заменить имя App
с переменной, которой вы назначили свой Ember.Application.create();