fod*_*ma1 2 javascript angularjs angular-ui-router
我想根据我的 angular 应用程序中的状态设置标题。它工作得很好,但如果没有在子状态上定义标题,我想回到父级的标题属性。
这是我到目前为止:
在我的应用程序运行块中:
...
$rootScope.$on('$stateChangeSuccess', function (event, current, previous) {
if (current.hasOwnProperty('title')) {
$rootScope.title = current.title;
}
});
...
Run Code Online (Sandbox Code Playgroud)
在我的模块路线中
.state('main.parent', {
url: '/parent',
controller: 'ParentController',
controllerAs: 'vm',
templateUrl: 'app/parent.html',
title: 'Parent',
})
.state('main.parent.child', {
url: '/child',
controller: 'ChildController',
controllerAs: 'vm',
templateUrl: 'app/child.html'
})
Run Code Online (Sandbox Code Playgroud)
在代码检查期间,我发现它$stateChangeSuccess按预期触发了两次,首先是父级,然后是子级。我试图current.parent在孩子被调用时访问,但它没有这样的属性。有什么方法可以访问它吗?
更新
我看到这些问题: 获取父状态从UI路由器$ stateChangeStart, 从母公司获得国家UI路由器$ stateChangeStart 但他们都没有一个明确的答案,这个问题(除了在后者的状态分裂技巧,但我宁愿避免这种情况)。
这两种方式都有点小技巧。不要忘记在您的控制器中导入 $state(和 $stateParams 用于第二个变体)提供程序。您可以使用:
$state.$current.parent.self.title
Run Code Online (Sandbox Code Playgroud)
或者
var tree = current.name.split('.');
tree.splice(tree.length-1, 1);
var parent = tree.join('.');
$state.get(parent, $stateParams);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5092 次 |
| 最近记录: |