Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularJs中存储解析方法的最佳位置_Javascript_Angularjs_Angularjs Routing_Angularjs Controller - Fatal编程技术网

Javascript 在angularJs中存储解析方法的最佳位置

Javascript 在angularJs中存储解析方法的最佳位置,javascript,angularjs,angularjs-routing,angularjs-controller,Javascript,Angularjs,Angularjs Routing,Angularjs Controller,我目前正在为我的管理面板路由设置解析,我想知道存储它们的最佳方式是什么,因为理想情况下我不想让我的路由器充满这样的方法: when('/admin', { templateUrl: 'app/private/admin/view.html', controller: 'admin', resolve: ['$q', '$location', 'api', function($q, $location, api){ var deferred = $q.de

我目前正在为我的管理面板路由设置解析,我想知道存储它们的最佳方式是什么,因为理想情况下我不想让我的路由器充满这样的方法:

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
})
但是,管理控制器无法从配置中访问,因此这使我不得不使用一个提供程序,在扩展我的应用程序时,它仍然会很混乱


您如何处理您的解决方案/是否可以将其存储在我的控制器中?

我通常使用服务来解决我想要解决的问题:

when('/admin', {
templateUrl: 'app/private/admin/view.html',
controller: 'admin',
resolve: { adminData: function(myService) { return myService.list(); } }
});
更高级的角度路由器(如UI路由器)允许状态从父状态继承。如果您想在多个状态下进行解析,可以使用继承,并在父状态下定义解析。()