Plunkr演示问题:
http://plnkr.co/edit/Czc5kGpCwsruUQe2EanZ?p=preview
状态:
.state('state1', {
url: '/state1',
template: '<div>state1 <pre>{{current | json }}</pre><div ui-view=""></div> </div>',
controller: 'State1Ctrl',
})
.state('state1.list', {
url: '/list',
template: '<div>list <pre>{{current | json }}</pre></div>',
controller: 'State1ListCtrl',
})
控制器:
.controller('State1Ctrl', function($scope, $state, $rootScope, $controller) {
$scope.current = $state
})
.controller('State1ListCtrl', function($scope, $state) {
$scope.current = $state
})
产生结果:
state1
{
"url": "/list",
"template": "<div>list <pre>{{current | json }}</pre></div>",
"controller": "State1ListCtrl",
"name": "state1.list"
}
list
{
"url": "/list",
"template": "<div>list <pre>{{current | json }}</pre></div>",
"controller": "State1ListCtrl",
"name": "state1.list"
}
将直接转到state1.list
州。
我需要访问控制器所关联的状态,例如我希望结果是:
state1 (notice how this is different - it has the state1 configuration now)
{
"url": "/state1",
"template": "<div>list <pre>{{current | json }}</pre></div>",
"controller": "State1Ctrl",
"name": "state1"
}
list
{
"url": "/list",
"template": "<div>list <pre>{{current | json }}</pre></div>",
"controller": "State1ListCtrl",
"name": "state1.list"
}
我理解状态。$ current是当前状态,但是如何确定控制器与之关联的状态?
答案 0 :(得分:2)
控制器意味着独立于ui-router中的状态,因此同一个控制器可用于任何状态。
但是你可以通过使用例如任何地方获得任何州$state.get('state1.list')
我认为你可能只需要某个人知道哪个控制器与哪个状态相关联。每个控制器是否知道与其关联的状态并调用$state.get('stateName')
来获取它,或者您可以构建一个将返回控制器名称状态的服务,或者您甚至可以使用$state.get()
来获取所有状态然后枚举列表,直到其中一个控制器名称与您所在的控制器匹配。
希望有所帮助。