我試圖從一個兒童路線導航到另一個兒童路線,但我不斷得到Route not found
。我的主要問題:如何瀏覽子視圖?Aurelia:兒童路線之間的導航
下面是代碼,下面還會有其他問題。
應用模式 - 視圖 App類:
export class App {
configureRouter(config, router) {
config.title = 'My Site';
config.map([
{ route: ['','job-view'], name: 'jobView', moduleId: './job-view', nav: true, title:'Jobs'},
{ route: ['services'], name: 'services', moduleId: './services', nav: true, title:'Services'}
]);
this.router = router;
this.router.refreshNavigation();
}
}
Q.2:爲什麼我們需要保存router
這裏,如果它總是從訪問aurelia-router
?
應用頁面:
<template>
<require from='./nav-bar'></require>
<nav-bar router.bind="router"></nav-bar>
<div class="container">
<router-view></router-view>
</div>
</template>
好了,現在我們已經定義了我們的根頁面視圖和導航,讓我們定義job-view
MV。
工作視圖類:
export class JobView {
configureRouter(config, router) {
config.map([
{ route: ['','jobs'], name: 'jobs', moduleId: './jobs', nav: false, title:'Jobs', settings:{icon:'glyphicon glyphicon-align-justify'} },
{ route: ['job/:id'], name: 'job', moduleId: './job', nav: false, title:'Job Details'}
]);
this.router = router; //WHY SAVE THIS?
this.router.refreshNavigation();
}
}
工作視圖頁:
<template>
<router-view></router-view>
</template>
現在,這裏是孩子的意見。我的假設是,發生的路由應該是相對於job-view
。這就是我想要的,理想的。
工作類(爲簡潔移除一串代碼):
import {Router} from 'aurelia-router';
@inject(Router)
export class Jobs {
constructor(router) {
this.router = router;
}
toJob(id) {
// this.router.navigateToRoute("job", {id:id}); // ERROR - ROUTE NOT FOUND
this.router.navigate("#/job-view/job/".concat(id)); // THIS WORKS
}
}
Q.3:我看到二者router.navigateToRoute
和router.navigate
引用,但沒有指示時,既可以使用或者有什麼區別,並且文件看不到解釋。應該使用哪個? Docs
職位頁: 細則jobs.html
是無關緊要的,所以這裏沒有列出。
最後,job
觀點:
作業類: 相關job.js
沒有,所以不上市代碼。最多我可以執行導航回到jobs
,但這在頁面下方處理。
招聘頁:
<!-- a bunch of html //-->
<!-- HOW TO USE ROUTER IN HTML, NOT BELOW URL HREF? //-->
<a href="#/jobs">Print Jobs</a>
<!-- a bunch of html //-->
Q.4:同樣,我想路由到相對的,即使是在HTML頁面。以上將不起作用,所以我應該使用什麼?
在類似的問題中有一個proposed answer,但注入job-view
到job
和使用job-view
的保存的路由器也沒有工作。
順便說一下,如果我手動導航到http://localhost:3000/#/job-view/job/3
頁面加載正常,所以這是明確的路由器。
注意mod: 類似的問題在How to access child router in Aurelia?被詢問,但它沒有得到解決方案的回答。
'route-href'不是我以前見過的。有趣。是否有文檔?我會嘗試,當我有機會。我遇到的問題是我的電話'this.router.navigateToRoute(「job」,{id:id});'。我會更新這個問題來反映這一點。 –
抱歉,因爲很長的時間沒有回覆你。 route-href位於「生成路由URL」下的備忘單中http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.1.2/doc/article/cheat-sheet – Brandon
'this.router.navigateToRoute('workDetail',{slug:'slug'});'(或者它應該是'this.router.navigate('workDetail',{slug:'slug'});')工作'workDetail.js'(假設'workDetail'上的'configureRouter'類捕獲''router')? –