【问题标题】:Best place to store resolve methods in angularJs在 angularJs 中存储解析方法的最佳位置
【发布时间】:2014-12-31 03:37:17
【问题描述】:

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

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

但是无法从配置中访问管理控制器,所以这让我不得不使用提供程序,在扩展我的应用程序时仍然会很混乱。

你们都如何处理自己的解析/是否可以将其存储在我的控制器中?

【问题讨论】:

    标签: javascript angularjs angularjs-routing angularjs-controller


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多