Я работаю над локализацией своего дюрандального приложения. Я уже выбрал подход - я использую модуль на всех своих страницах, содержащий все строки, которые может иметь любое представление.
В своей оболочке я определяю
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 при навигации?