2

我目前正在爲我的管理面板路由設置解析,我想知道存儲它們的最佳方式是理想情況下,我不想讓路由器充滿如下所示的方法:在angularJs中存儲解析方法的最佳位置

when('/admin', { 
    templateUrl: 'app/private/admin/view.html', 
    controller: 'admin', 
    resolve: ['$q', '$location', 'api', function($q, $location, api){ 

     var deferred = $q.defer(), 
      session = api.session(); 

     if(session){ 
      deferred.resolve(session); 
     } else { 
      api.authorise().success(function(response){ 
       deferred.resolve(response); 
      }).error(function(error){ 
       $location.path('/login'); 
       deferred.reject(error); 
      }); 
     } 

     return deferred.promise; 

    }] 
}) 

我認爲理想的結構,將存儲在我使用該路由控制器的議決,所以像:

when('/admin', { 
    templateUrl: 'app/private/admin/view.html', 
    controller: 'admin', 
    resolve: adminCtrl.resolve 
}) 

但是管理員控制器不是從配置訪問所以這讓我不得不使用一個仍然是goi的提供商在擴展我的應用程序時會很麻煩。

你們如何處理你的決議/是否有可能將其存儲在我的控制器?

回答

3

我通常使用我希望得到解決的事情服務:

when('/admin', { 
templateUrl: 'app/private/admin/view.html', 
controller: 'admin', 
resolve: { adminData: function(myService) { return myService.list(); } } 
}); 

更先進的角路由器一樣UI路由器使各國從父母繼承的狀態。如果你想在多個狀態下進行解析,你可以使用繼承,並在父狀態下定義解析。 (https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views)。