Bra*_*don 5 javascript aurelia
我想为我的Aurelia应用程序设置基本标题值,然后根据活动的路由为其附加一个值.
我的路由器配置是:
export class App {
configureRouter(config, router) {
config.title = 'Brandon Taylor | Web Developer | Graphic Designer';
config.map([
. . .
{ route: 'work', name: 'work', moduleId: 'work', nav: true, title: ' | work' },
. . .
]);
this.router = router;
}
}
Run Code Online (Sandbox Code Playgroud)
奥里利亚希望将追加title导航参数来开始的config.title,但我想它的结束.
我试过在视图模型中做一个覆盖:
export class Work {
activate(params, routeConfig, navigationInstruction) {
routeConfig.navModel.router.title += ' | work';
};
}
Run Code Online (Sandbox Code Playgroud)
但结果是:
Brandon Taylor | Web Developer | Graphic Designer | work | work | work ...
Run Code Online (Sandbox Code Playgroud)
在每个路由请求上.我究竟做错了什么?或者我怎么可以追加路由title属性到结束的config.title,而不是开始的?
Aurelia的标准标题逻辑将路由标题添加到外部路由/路由器的标题之前.例如,在骨架导航应用程序中,应用程序路由器的标题是Aurelia.github用户路由的标题前置于路由器标题生成Github Users | Aurelia.如果您要导航到子路由器页面,标题将更新为Welcome | Child Router | Aurelia.

如果我正确理解了这个问题,你会想要颠倒这个逻辑.这个例子中的期望结果是Aurelia | Child Router | Welcome.
标题构建逻辑驻留在NavigationContext类的buildTitle方法中.
您可以通过将以下内容添加到main.js来覆盖此方法:
// import the NavigationContext class. It contains the method that
// builds the title.
import {NavigationContext} from 'aurelia-router';
// rename the standard "buildTitle" method.
NavigationContext.prototype.standardBuildTitle = NavigationContext.prototype.buildTitle;
// replace the standard "buildTitle" method with a version that
// reverses the order of the title parts.
function buildTitle(separator = ' | ') {
let standardTitle = this.standardBuildTitle(separator);
return standardTitle.split(separator).reverse().join(separator);
}
NavigationContext.prototype.buildTitle = buildTitle;
Run Code Online (Sandbox Code Playgroud)
最终结果如下:

感谢您为我指明了正确的方向@Jeremy Danyow。
我最终得到的是:
import {NavigationContext} from 'aurelia-router';
NavigationContext.prototype.standardBuildTitle = NavigationContext.prototype.buildTitle;
function buildTitle(separator=' | ') {
var titleValues = this.standardBuildTitle(separator).split(separator),
routeTitle = titleValues[0],
configTitle = titleValues.slice(1);
configTitle.push(routeTitle);
return configTitle.join(separator);
}
NavigationContext.prototype.buildTitle = buildTitle;
Run Code Online (Sandbox Code Playgroud)
原因如下:
config.title = 'Brandon Taylor | Web Developer | Graphic Designer'
Run Code Online (Sandbox Code Playgroud)
并致电:
return standardTitle.split(separator).reverse().join(separator);
Run Code Online (Sandbox Code Playgroud)
结果是:
Graphic Designer | Web Developer | Brandon Taylor | about
Run Code Online (Sandbox Code Playgroud)
代替:
Brandon Taylor | Web Developer | Graphic Designer | about
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |