hệ thống phân cấp tiểu bang của tôi là (từ trên xuống dưới):Bộ định tuyến giao diện người dùng góc, cách lấy danh sách tổ tiên của trạng thái hiện tại từ bộ điều khiển?
root
account
account.invoices
account.invoices.detail
Khi tôi đang ở trong trạng thái account.invoices.detail
Tôi muốn nhận danh sách các quốc gia tổ tiên:
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)
}]);
Bộ định tuyến giao diện người dùng góc cho phép bạn chuyển sang trạng thái gốc (tức là từ một cái nhìn với data-ui-sref="^"
), vì vậy nó sẽ có thể đạt được điều này (theo dõi chuỗi tổ tiên lên đến root
).
Tôi cần điều này để tạo chức năng giống như đường dẫn tự động.
EDIT: đã kết thúc với điều này, nhờ vào các câu trả lời được chấp nhận:
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;
}
Nếu bạn hỏi tại sao việc kiểm tra cho parent.name.length
của nó bởi vì có cái gì đó giống như một "gốc" nhà nước tại góc giao diện người dùng (có thể 't nhận được bất kỳ tài liệu về).
Như bạn đã nói, bạn có thể làm điều đó bằng cách thẩm vấn cha mẹ hoặc cha mẹ và tự xây dựng danh sách. AFAIK không có phương thức trả về danh sách tổ tiên cho một trạng thái cụ thể. – Wawy
@Wawy làm thế nào để tôi thẩm vấn cha mẹ của nhà nước hiện tại? Từ bên trong bộ điều khiển, tôi có nghĩa là ... – gremo