Я пытаюсь динамически установить заголовок страницы в своем угловом приложении.
У меня уже есть работа с жестко закодированным названием, динамически меняющимся в зависимости от состояния
.state('faq-detail', {
url: '/faqs/:faqId',
templateUrl: 'client/faq/faq-detail.view.ng.html',
controller: 'FaqListCtrl',
data: {
title: 'Faq details'
}
});
но я хочу получить в этом случае заголовок вопроса и поместить его в качестве заголовка страницы.
Вопрос исходит из базы данных монго, и я использую угловой метеор.
.state('faq-detail', {
url: '/faqs/:faqId',
templateUrl: 'client/faq/faq-detail.view.ng.html',
controller: 'FaqListCtrl',
data: {
title: Faq.findOne({_id: $stateParams.faqId}).question
},
resolve: {
theFaq: function ($meteor, $stateParams) {
return $meteor.subscribe('faq').then(function () {
return Faq.findOne({_id: $stateParams.faqId});
});
}
}
Я пробовал это, но, как вы знаете, $stateParams
не зависит от области data.title
.
Другой метод, который я пробовал, следующий:
// ATEMPT TO SET THE TITLE DYNAMICALLY WITH THE QUESTION
$scope.autorun(() => {
console.log($scope.getReactively('theFaq'));
if ($scope.theFaq) {
let faqTitle = $scope.getReactively('theFaq').question;
// $state.get('faq-detail').data.title = faqTitle;
$state.current.data.title = faqTitle;
}
});
Но вместо этого он устанавливает заголовок после загрузки другого представления с помощью того же контроллера. Итак, теперь у меня есть заголовок из последнего посещенного представления вместо текущего.
Вопрос
Как установить заголовок страницы из значения ключа объекта, возвращаемого из коллекции монго в угловом метеор?
Для меня самый чистый способ добиться того, чего вы хотите, - это сделать это в вашем контроллере. Например:
angular.module('mymodule').controller('FaqListCtrl', function($stateParams, $window){
let title = Faq.findOne({_id: $stateParams.faqId}).question;
$window.document.title = title;
})