2016-09-16 6 views
0

Я пытаюсь динамически установить заголовок страницы в своем угловом приложении.Угловой uiRouter задает заголовок страницы из документа базы данных

Я уже это работает с закодированным названием динамически изменяющийся в зависимости от состояния

.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 не defiend в 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; 
    } 
}); 

Но вместо того, чтобы установить заголовок после того, как загрузить другой вид с тем же контроллером. Итак, теперь у меня есть заголовок из последнего посещенного представления вместо текущего.

Вопрос

Как установить заголовок страницы из значения ключа объекта, возвращенного из коллекции Монго в угловом-метеором?

ответ

0

Для меня самый чистый способ добиться того, что вы хотите, - это сделать это в своем контроллере. Например:

angular.module('mymodule').controller('FaqListCtrl', function($stateParams, $window){ 
    let title = Faq.findOne({_id: $stateParams.faqId}).question; 
    $window.document.title = title; 
}) 
Смежные вопросы