2016-09-16 70 views
0

我試圖在我的角度應用程序中動態設置頁面標題。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; 
    } 
}); 

但這代替設置後我加載與同一控制器中的另一個視圖的標題。所以現在我有最後一次訪問的視圖的標題,而不是當前的視圖。

問題

如何設置頁面的標題從角流星從蒙戈集合返回的對象鍵值?

回答

0

對我來說,實現你想要的最簡潔的方法是在你的控制器中完成它。例如:

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