我正在本地化我的 durandal 应用程序。我已经选择了一种方法——我在我的所有页面中共享一个模块,其中包含任何视图可能具有的所有字符串。
在我的外壳中,我正在定义
router.map([
{ route: ['', 'search'], title: i18n.search, moduleId: 'viewmodels/search/index', nav: true },
{ route: "employees", title: i18n.employeesList, moduleId: "viewmodels/employees/index", nav: false },
{ route: "details/:id", title: i18n.details, moduleId: "viewmodels/details/index", nav: false }
// ...
]);
其中i18n
属性是 ko.observables 包含字符串,如
i18n = {
search: ko.observable("search"),
employeesList: ko.observable("employeesList"),
details: ko.observable("Details")
}
这可以很好地打印我的导航栏
<ul class = "nav navbar-nav" data-bind = "foreach: router.navigationModel">
<li data-bind = "css: { active: isActive }">
<a data-bind = "attr: { href: hash }, text: title"></a>
</li>
</ul>
但是,在更改文档标题时,它不起作用。
在这里,我发现了一些关于 durandal 设置 document.title 的内容,不幸的是,答案表明要更改标题 durandal 会创建一些其他属性(这似乎基于我的title
模块对象声明属性)并且可能不认为title
可能是其他的比字符串。
有没有办法覆盖 durandal 用来更改 document.title 的某些方法,或者在导航时使其更改 document.title 的任何其他方法?