我的州层次结构是(从上到下):
root
account
account.invoices
account.invoices.detail
当我在
account.invoices.detail
状态我想获得祖先状态列表:angular
.module('app')
.controller('InvoiceDetailCtrl', ['$scope', '$state', function ($scope, $state) {
var current = $state.current.name;
// Get ancestors from current state
// Tried $state.current.parent, $state.parent, $state.parent(current)
}]);
Angular UI 路由器允许您转换到父状态(即从具有
data-ui-sref="^"
的 View ),因此应该可以实现这一点(跟踪祖先链直到 root
)。我需要它来构建类似自动面包屑的功能。
编辑 :由于接受的答案,最终得到了这个:
var current = $scope.$state.$current,
parent = current.parent,
ancestors = [current.name];
while (typeof parent != 'undefined' && parent.name.length) {
ancestors.push(parent.name);
parent = parent.parent;
}
如果你问为什么要检查
parent.name.length
这是因为 Angular UI 中存在类似于“根”状态的东西(无法获得任何相关文档)。
最佳答案
看看$state.$current.includes
;它似乎返回一个键匹配当前和父状态的对象。我相信这些都是会通过 $state.includes()
的状态测试。
关于angularjs - Angular UI 路由器,如何从 Controller 获取当前状态的祖先列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607140/