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