У меня есть веб-приложение AngularJS. Я хотел бы изменить название страницы динамически. Я бы хотел, чтобы язык был настроен с учетом, поэтому заголовок должен отображаться на разных языках.
Мне удалось изменить название динамически, когда я перехожу на разные страницы. Я получил третий подход к этому сообщению Как динамически изменить заголовок на основе частичного просмотра AngularJS?, который выглядел наиболее простым для меня (я имею в виду тот, у кого используется $rootScope).
У меня только проблема. Когда я на странице, скажем, индекс, и предположим, что языковая конфигурация - английская, название отображается правильно на английском языке. Но если я изменю язык, например, на испанский (в выпадающем списке в панели навигации), название не изменяется. Если я перейду на другую страницу, заголовок будет правильно отображаться на испанском языке.
Пожалуйста, найдите соответствующий код:
HTML:
<title ng-bind="title"></title>
КАЖДЫЙ КОНТРОЛЛЕР:
.controller('HomeCtrl', function HomeCtrl($scope, $rootScope, $translate) {
$rootScope.title = $translate('PAGE_TITLE_INDEX');
...
}
.controller ('AboutCtrl', function ($scope, $rootScope, $translate) {
$rootScope.title = $translate('PAGE_TITLE_ABOUT');
...
}
ЯЗЫК ВЫБРАТЬ DROPDOWN
<div ng-controller="LocationCtrl" style="padding-top: 5px">
<select class="bootstrap-select-language show-tick"
ng-change="changeLanguage(langKey)"
ng-model="langKey"
data-header="Choose your language..."
ng-options="language.locale as language.name for language in translationLanguages"
bs-select
data-width="150px">
</select>
</div>
ФУНКЦИЯ ПЕРЕВОДА В КОНТРОЛЛЕРЕ
$scope.changeLanguage = function (langKey) {
$scope.langKey = langKey;
$translate.uses(langKey);
...
}
UPDATE
Я думаю, что для этого сценария первый подход в вышеупомянутой статье является правильным (я имею в виду, сохраняя заголовок в сервисе и получая и устанавливая его с контроллеров). Таким образом, вы можете получить текущее значение названия в контроллере переводов и изменить его динамически. Правильно?