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)。