Angular uiRouter从数据库文档中设置页面标题

Angular uiRouter从数据库文档中设置页面标题

问题描述:

我试图在我的角度应用程序中动态设置页面标题。Angular uiRouter从数据库文档中设置页面标题

我已经将其与动态硬编码的标题改变工作基于状态

.state('faq-detail', { 
    url: '/faqs/:faqId', 
    templateUrl: 'client/faq/faq-detail.view.ng.html', 
    controller: 'FaqListCtrl', 
    data: { 
     title: 'Faq details' 
    } 
    }); 

,但我想要得到的,在这种情况下,问题的标题,并把它作为网页的标题。

问题来自mongo数据库,我使用角流星。

.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区域defiend。

我已经尝试的另一种方法是这样的一种:

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