Angular uiRouter установить заголовок страницы из документа базы данных

0

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

У меня уже есть работа с жестко закодированным названием, динамически меняющимся в зависимости от состояния

.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;
  }
});

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

Вопрос

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

Теги:
meteor
angular-meteor

1 ответ

0

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

angular.module('mymodule').controller('FaqListCtrl', function($stateParams, $window){
    let title = Faq.findOne({_id: $stateParams.faqId}).question;
    $window.document.title = title;
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню