【发布时间】:2018-09-28 11:49:03
【问题描述】:
我想设置根据路线变化的页面标题。我的意思是响应式标题。
我的模块中有一个指令:
mainModule.directive("pageTitle", function($state){
return {
restrict: 'A',
template: "{{title}}",
scope: {title: '=title'},
link: function (scope, elem, attr) {
scope.title=$state.current.data.title; //wrap this in $watch
console.log('page state',$state.current.data.title);
}
}
})
在我的 main.cshtml 中,我在头标签中有这个标题指令:
<title><page-title title="{{$state.current.data.title}}"></page-title></title>
我的配置文件中有 stateProvider:
$stateProvider
.state('a-management', {
name: 'aManState',
url: '/a-management',
template: '<div license-a permissions = permissions></div>',
data: {title: 'A Management'}
})
.state('b-management/bs', {
url: '/b-management/bs',
template: '<b-management current-user = currentUser permissions = permissions></b-management>',
data: {title: 'B Management'}
})
我也使用了ui-sref-active="active"。
一切看起来都很好,但是当我运行网站时,这不起作用。我打开控制台,看看我有什么,看起来它可以到达 $state(通过状态服务),但它的 current 属性是空的。
为什么我的代码不能达到 current,所以 current.data 也是?有什么我错过的吗?
【问题讨论】:
-
@Jignesh Joisar 我已经做了积极的事情
-
创建一个独立的作用域,做类似
scope.state = $state的事情,然后把{{state.current.name}}放到模板里 -
嗨@codergirrl,我在这里添加了一条评论stackoverflow.com/a/52538794/91017,关于如何使用$stateChangeSuccess 监听器来做到这一点
标签: angularjs routing frontend state directive