小编典典

AngularJS UI-Router从视图中获取当前状态

angularjs

考虑从ui-router文档获取的以下状态:

.state('state1', {
  url: '/state1',
  templateUrl: 'partials/state1.html'
  controller: 'State1Ctrl'
})
.state('state1.list', {
  url: '/list',
  templateUrl: 'partials/state1.list.html',
})

以及状态“ state1”的“ partials / state1.html”控制器:

.controller('State1Ctrl', function () {

});

是否有任何内置功能可从控制器内部或模板内部确定控制器/模板与哪个状态关联?

例如:

.controller('State1Ctrl', function ($state) {
  console.log($state.this); // state1
});

而且,如果没有内置解决方案,您将如何“装饰” $ state或$ stateParams以包含此信息?

我想出的唯一解决方案是使用$ state.get(),然后使用控制器或模板值查找状态。但是,这似乎令人难以置信。


阅读 210

收藏
2020-07-04

共1个答案

小编典典

在任何地方都找不到此文档,因此我查看了源代码。

ui-view元素上附加了一个名为$ uiView的数据字段,其中包含视图名称和关联的状态。您可以这样获得此状态:

elem.closest('[ui-view]').data('$uiView').state

甚至

elem.inheritedData('$uiView').state
2020-07-04