Angularjs 使用ui.router时如何使用两个标头信息?
我使用angularjs的ui.router,有两个路由模板视图。因此,我在index.html上只有一个Angularjs 使用ui.router时如何使用两个标头信息?,angularjs,Angularjs,我使用angularjs的ui.router,有两个路由模板视图。因此,我在index.html上只有一个信息 但是,我想将不同的序列头元属性和值信息应用于这两个模板。例如,t到模板1和到模板2 有什么方法可以做到这一点,但仍然使用ui.router,而不是将它们分为两个独立的页面吗?使用$rootScope变量 main.js: $rootScope.metatags = { content: 'Default content' }; $rootScope.metatags.cont
信息
但是,我想将不同的序列头元属性和值信息应用于这两个模板。例如,t
到模板1和
到模板2
有什么方法可以做到这一点,但仍然使用ui.router,而不是将它们分为两个独立的页面吗?使用
$rootScope
变量
main.js:
$rootScope.metatags = {
content: 'Default content'
};
$rootScope.metatags.content = 'Something1';
$rootScope.metatags.content = 'Something2';
<head>
// something
<meta property="og:title" content="{{metatags.content}}">
</head>
Something1控制器:
$rootScope.metatags = {
content: 'Default content'
};
$rootScope.metatags.content = 'Something1';
$rootScope.metatags.content = 'Something2';
<head>
// something
<meta property="og:title" content="{{metatags.content}}">
</head>
Something2控制器:
$rootScope.metatags = {
content: 'Default content'
};
$rootScope.metatags.content = 'Something1';
$rootScope.metatags.content = 'Something2';
<head>
// something
<meta property="og:title" content="{{metatags.content}}">
</head>
index.html:
$rootScope.metatags = {
content: 'Default content'
};
$rootScope.metatags.content = 'Something1';
$rootScope.metatags.content = 'Something2';
<head>
// something
<meta property="og:title" content="{{metatags.content}}">
</head>
//某物
与@WorkWe使用$rootScope
的想法相同,但您可以将其作为定义新状态时可选属性的数据对象的值传递,而不是将元标记信息放在控制器上。有关更多信息,请参阅
$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>
也许这有帮助:我在facebook网站管理员的“property=”og:title“'上尝试了它,但它无法解析{{metatags.content}()。另外,如果我使用$rootScope,我所有页面的作用域都会中断,所有的“{}}”表达式都无法解析。