javascript - 在 AngularJs 中存储解析方法的最佳位置

标签 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.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;

    }]
})

我认为理想的结构是将解析存储在我用于该路由的 Controller 中,因此类似于:

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

但是,无法从配置访问管理 Controller ,因此这使我不得不使用提供程序,而在扩展我的应用程序时,该提供程序仍然会很困惑。

你们都如何处理您的解决方案/是否可以将其存储在我的 Controller 中?

最佳答案

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

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

更高级的 Angular 路由器(例如 UI-router)允许状态从父状态继承。如果您想在多个状态下进行解析,您可以使用继承,并在父状态中定义解析。 (https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views)。

关于javascript - 在 AngularJs 中存储解析方法的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731888/

相关文章:

javascript - 如何找到可打印区域的实际周长?

Javascript - 在迭代时操作多维数组中的值

angularjs - 如何在 Angular Controller 中使用当前的URL参数

javascript - 有没有办法为 HTML5 输入的模式属性应用正则表达式修饰符?

javascript - 如何组合相似的功能 - Javascript

angularjs - Angular ,广播不起作用

javascript - AngularJS json 数据未显示在文本区域上

javascript - 如何在给定时间之前停止执行指令?

asp.net-mvc - 如何使用 ASP.NET MVC 和 AngularJS 路由?

javascript - 从 Angular Ui-Router 中的参数定义 'parent' 值