Tôi đang cố gắng điều hướng từ một lộ trình con đến một tuyến đường khác, nhưng tôi liên tục nhận được Route not found
. Câu hỏi chính của tôi: cách điều hướng giữa các chế độ xem con?Aurelia: Cách điều hướng giữa các tuyến đường trẻ em
Dưới đây là mã và tôi cũng sẽ có thêm câu hỏi bên dưới.
App Chế độ-View App Class:
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: Tại sao chúng ta cần phải lưu router
đây nếu nó luôn luôn thể truy cập từ aurelia-router
?
App Page:
<template>
<require from='./nav-bar'></require>
<nav-bar router.bind="router"></nav-bar>
<div class="container">
<router-view></router-view>
</div>
</template>
Ok, vì vậy bây giờ chúng ta có cái nhìn trang gốc và nav của chúng tôi xác định, hãy định nghĩa MV job-view
.
JobView Class:
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();
}
}
JobView Page:
<template>
<router-view></router-view>
</template>
Bây giờ, đây là quan điểm con. Giả định của tôi là định tuyến xảy ra phải tương ứng với job-view
. Đó là những gì tôi muốn, lý tưởng.
Jobs Lớp(một bó mã loại bỏ cho ngắn gọn):
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: Tôi đã nhìn thấy cả router.navigateToRoute
và router.navigate
tham chiếu, nhưng không có dấu hiệu cho thấy khi sử dụng một trong hai hoặc sự khác biệt là gì, và tài liệu không được giải thích. Nên sử dụng cái nào? Docs
Jobs Page: Details for jobs.html
không liên quan, vì vậy không liệt kê chúng ở đây.
Cuối cùng, job
xem:
Job Class: Không có gì liên quan cho job.js
, vì vậy không niêm yết mã. Tối đa, tôi có thể thực hiện điều hướng quay lại jobs
nhưng được xử lý bên dưới trong trang.
Việc Làm Trang:
<!-- 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: Một lần nữa, tôi muốn định tuyến để người thân, thậm chí trong trang HTML. Ở trên sẽ không hoạt động, vì vậy tôi nên sử dụng những gì?
Có một số proposed answer trong cùng một câu hỏi, nhưng việc tiêm job-view
vào job
và sử dụng bộ định tuyến đã lưu job-view
cũng không hoạt động.
Nhân tiện, nếu tôi điều hướng theo cách thủ công đến http://localhost:3000/#/job-view/job/3
trang tải tốt, vì vậy, điều đó rõ ràng với bộ định tuyến.
Lưu ý mod: Câu hỏi tương tự được hỏi tại số How to access child router in Aurelia? nhưng không được trả lời bằng giải pháp hoạt động.
Đó là 'route-href' không phải là thứ tôi đã thấy trước đây. Hấp dẫn. Có tài liệu cho nó không? Tôi sẽ cố gắng khi tôi có cơ hội. Vấn đề tôi gặp phải là với cuộc gọi của tôi 'this.router.navigateToRoute (" job ", {id: id});'. Tôi sẽ cập nhật câu hỏi để phản ánh điều đó. –
Xin lỗi vì sự chậm trễ rất lớn khi trở lại với bạn. Tuyến đường-href nằm trong bảng tính bên dưới "Tạo URL tuyến đường" 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'});' (hoặc nó nên là 'this.router.navigate ('workDetail', {slug: 'slug'});') làm việc 'workDetail.js' (giả sử' configureRouter' trên lớp 'workDetail' bắt' router')? –