與@WorkWe同樣的想法用$rootScope
的,但不是把控制器上的meta標籤的信息,可以定義時將它作爲data object
這是一個可選屬性的值一個新的狀態。有關更多信息,請參見docs。
$stateProvider
.state('home', {
url: '/',
templateUrl: 'home.html',
data: {
metatags: { title: 'Something1' }
}
})
.state('about', {
url: '/about',
templateUrl: 'about.html',
data: {
metatags: { title: 'Something2' }
}
});
而在你的app.js,把它分配給了一些$ rootScope財產
angular
.module('app', ['ui.router'])
.run(function($rootScope, $state) {
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
if(angular.isDefined(toState.data) && angular.isDefined(toState.data.metatags)) {
$rootScope.metatags = toState.data.metatags;
} else {
$rootScope.metatags = { title: 'Your default meta title content' };
}
});
});
最後,在你的HTML文件:
<head>
<meta name="og:title" content="{{ metatags.title }}">
</head>
也許這可以幫助:https://開頭的github .com/tinusn/ui-router-metatags –