Я пытаюсь использовать атрибут route-href
внутри представления в дочернем маршрутизаторе. Мой родительский роутер выглядит так:
configureRouter(config, router){
config.title = 'Kali';
config.map([
// { route: '', moduleId: 'no-selection', title: 'Select'},
{ route: ['', 'courses'], moduleId: 'courses' }
]);
this.router = router;
}
Мой дочерний роутер выглядит так:
configureRouter(config, router){
config.map([
{ route: ['', '/'], moduleId: 'no-selection', title: 'Select'},
{ route: '/:id', moduleId: 'courses/course-detail' }
]);
this.router = router;
}
А вот мой атрибут route-href...
<a route-href="route: '', params: { id: course.id }" click.delegate="$parent.select(course.id)">
Когда я использую это, я ожидаю, что route-href
будет использовать маршруты от дочернего маршрутизатора. Вместо этого я получаю эту трассировку стека. Просматривая код, я вижу, что RouteHref вызывает router.generate
для создания маршрута. router.generate
должен рекурсивно подниматься по иерархии маршрутизаторов, так что это не должно быть проблемой. Однако я не уверен, какой маршрутизатор передается конструктору route-href
. Я думаю, что здесь есть две проблемы: во-первых, я не уверен, что route-href
получает правильный маршрутизатор, а во-вторых, я не уверен, обрабатывает ли route-href
выражение с пустым маршрутом и каким образом.
Трассировки стека:
message: "There is no route named '', params: { id: course.id }"
stack: "Error: There is no route named '', params: { id: course.id }↵ at RouteRecognizer.generate (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/index.js:244:19)↵ at AppRouter.generate (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/router.js:210:38)↵ at Router.generate (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/router.js:207:32)↵ at RouteHref.processChange (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/route-href.js:42:34)↵ at RouteHref.bind (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/route-href.js:30:16)↵ at BehaviorInstance.bind (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/behavior-instance.js:68:35)↵ at View.bind (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/view.js:68:26)↵ at ViewFactory.create (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/view-factory.js:173:18)↵ at BoundViewFactory.create (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/view-factory.js:127:35)↵ at Repeat.processArrayItems (http://localhost:9000/jspm_packages/github/aurelia/[email protected]/repeat.js:132:32)"
Любые идеи? Спасибо.
route: courses, params: { id: course.id }
, но это тоже не сработало. Это работало до того, как я представил дочерние маршрутизаторы. - person jedd.ahyoung   schedule 10.05.2015