2014-10-29 18 views
6

Tôi đang sử dụng ui-router và tôi có các trạng thái con và một trạng thái trừu tượng - phụ huynh.AngularJS ui-router, làm cách nào để lấy tên của trạng thái được nhắm mục tiêu trong đối tượng phân giải của trạng thái phần tử trừu tượng?

Bây giờ, tôi muốn có thể thực hiện một số quản lý vai trò người dùng và tôi muốn làm điều đó ở một nơi duy nhất, cho tất cả các gốc.

Cách tốt nhất để làm điều đó, là trong đối tượng quyết tâm trạng của cha mẹ. $ StateProvider

Ở đây, tôi làm điều này để quản lý dữ liệu xác thực rộng ứng dụng.

Câu hỏi đặt ra là, làm cách nào để nhận trạng thái được nhắm mục tiêu từ hàm phân giải của trạng thái trừu tượng?

.state('section', { 
     abstract: true, 
     template: '<ui-view/>', 
     resolve: { 

      // Auth & role management middleware. 
      UserData: ['$q', '$stateParams', 'Session', function ($q, $stateParams, Session) { 

       // HOW DO I GET THE DESTINATION ROUTE HERE. 
       $state.current.name - returns null 
       $stateParams - is an empty object. 
       // ANY IDEAS? 

       var userData; 
       userData = Session.getUserData(); 
       if (userData.token) { 
        return userData; 
       } 
       return $q.reject('login'); 
      }] 
     } 
    }); 

Trả lời

2

trạng thái chưa được cập nhật khi bên trong giải quyết.

workaround của tôi cho đến nay được lắng nghe sự kiện '$ stateChangeStart' bởi

$rootScope.$on('$stateChangeStart', callback)

sự kiện này được phát ra trước khi quyết tâm, và param thứ hai truyền cho callback là toState trong đó có các thông tin bạn cần.

Bạn có thể đặt logic này vào bạn Session service

+1

Nó không phải là ý tưởng tốt nhất từ ​​quan điểm kiến ​​trúc của cái nhìn và khả năng tương thích trong tương lai, nhưng do thiếu sự lựa chọn thay thế khác, đó là một cách giải quyết tốt đẹp! Cảm ơn) –

Các vấn đề liên quan