如何使用aurelia路由器生成正确的详细url ?
How can I generate correct detail url using aurelia router?
我的应用程序的一个视图模型驻留在路由下:
http://localhost:9000/#/historical-orders/
http://localhost:9000/#/historical-orders/page/2/
http://localhost:9000/#/historical-orders/page/3/
等等。它是一个list view-model
,所以当用户点击其中的一行时,他或她应该被引导到:
http://localhost:9000/#/historical-orders/details/:orderId
看起来很简单,对吧?然而,路由生成有一个问题。即:如果我正在浏览其中一个页面(url以page/:pageNumber/
结尾),那么调用router.generate
会给我详细的url,看起来像这样:#/historical-orders/page/1/details/:orderId
,这显然是不正确的。路由配置:
export class App {
configureRouter(config, route) {
config.map([
{
route: ["historical-orders", "historical-orders/page/:pageNumber"],
moduleId: "orders/historical-orders-section",
name: "historical-orders-section",
title: "Historical orders",
nav: true
}
]);
}
}
历史订单部分:
export class HistoricalOrders {
configureRouter(config, router) {
config.map([
{
route: "",
moduleId: "orders/historical/orders-list",
title: "Orders history",
nav: false
},
{
route: "details/:id",
moduleId: "orders/historical/order-details",
name: "historical-orders-details",
title: "Details",
nav: false
},
]);
}
}
detail-view路由生成看起来很普通:
this._router.generate("historical-orders-details", { id: order.pk });
那么如何让路由器生成正确的url呢?
生成的URL不正确。您正在使用子路由器,这就是为什么生成的url是#/historical-orders/page/1/details/:orderId
。
#/historical-orders/details/:orderId
,您应该这样做:
export class App {
configureRouter(config, route) {
config.map([
{
route: ["historical-orders", "historical-orders/page/:pageNumber"],
moduleId: "orders/historical-orders-section",
name: "historical-orders-section",
title: "Historical orders",
nav: true
},
{
route: "orders/historical-orders/details/:id",
moduleId: "orders/historical/order-details",
name: "historical-orders-details",
title: "Details",
nav: false
}
]);
}
}
然后let url = this._router.generate("historical-orders-details", { id: order.pk });
EDIT访问当前路由器
import {inject} from 'aurelia-dependency-injection';
import {Router} from 'aurelia-router';
@inject(Router)
export class HistoricalOrders {
constructor(router) {
this.router = router; //this is the same app.js router
}
}
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 以角度管理动态URL
- Mathias URL shortener
- 如何有效地将游戏数据存储在URL查询字符串中
- 在Aurelia中设置URL而不刷新整个模板
- 如何显示一个未经授权的视图在请求的URL在Aurelia
- 我如何改变引导字体包括url从相对到绝对使用Aurelia cli时
- 如何使用aurelia路由器生成正确的详细url ?