Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度ui路由器,如何获取与控制器关联的状态?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 角度ui路由器,如何获取与控制器关联的状态?

Angularjs 角度ui路由器,如何获取与控制器关联的状态?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,Plunkr演示问题: 与各国一道: .state('state1', { url: '/state1', template: '<div>state1 <pre>{{current | json }}</pre><div ui-view=""></div> </div>', controller: 'State1Ctrl', }) .state('state1.list', { url: '/list',

Plunkr演示问题:

与各国一道:

.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',
})
生成结果:

", “控制器”:“State1Ctrl”, “名称”:“state1” } 列表 { “url”:“/列表”, “模板”:“列表{current | json}”, “控制器”:“State1ListCtrl”, “名称”:“state1.list” }
我了解该状态。$current是当前状态,但如何确定控制器关联的状态?

控制器应独立于ui路由器中的状态,以便同一控制器可用于任何状态

但是您可以通过使用例如
$state.get('state1.list')

我想你可能只需要让某个地方的人知道哪个控制器与哪个状态关联。每个控制器是否知道与哪个状态关联并调用
$state.get('stateName')
来获取它,或者你可以构建一个服务来返回控制器名称的状态,或者你甚至可以使用
$state.get()
获取所有状态,然后枚举列表,直到其中一个控制器名称与您所在的控制器匹配


希望能有所帮助。

是的,确实如此!我主要是想知道是否有一种内置的方法,但您建议的方法很好。:)
.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 (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"
}