在 AngularJS 中对 ui.router 的解析执行 $http get 请求可以吗?

2024-01-06

我有以下代码(如下),它们非常适合我并且至少满足我的需要。但我对此有点怀疑,我有一种感觉,这太好了,令人难以置信。因为我正在挣扎$http的异步行为这对我使用来自的响应对象有很大帮助$http在控制器上全局请求。

我只是想知道它是否是正确的方法或至少是可接受的方法,或者我应该使用传统的使用方法$http变得像那个人一样AngularJS 的文档 https://docs.angularjs.org/api/ng/service/%24http在我继续我的项目之前。答案会对我有很大帮助。谢谢。

$stateProvider

$stateProvider
    .state('test', {
        url: '/test',
        templateUrl: 'partial.template.html',
        resolve : {
            foo : function($http) {
                return $http({
                    method: 'GET',
                    url: '/api/something'
                });
            },
            bar : function($http) {
                return $http({
                    method: 'GET',
                    url: '/api/something'
                });
            },
        },
        controller: 'mainController',
    })

控制器

.controller('mainController',['$scope', 'foo', 'bar', function($scope, foo, bar){
    $scope.fooObj = foo;
    $scope.barObj = bar;
}])

我认为这可能是 ui-router 解析的最佳用例。

无论如何,我更愿意将我的 http 调用包装到服务中,并将该服务调用到解析中,而不是直接使用 $http 。

这可能看起来像这样:

app.service('FooService',function($http){
  var service={}; 
  service.getFoo = function(){
      return $http({
                method: 'GET',
                url: '/api/something'
             });
  }
  return service;
});

因此,您可以在您的应用程序中调用此方法(并同时集中它)。

在控制器中:

app.controller('MyController', function($scope, FooService) {
    $scope.controllerName = "MyController";
    FooService.getFoo().success(function(foo){
        $scope.foo = foo
    });
});

决心:

$stateProvider
.state('test', {
    url: '/test',
    templateUrl: 'partial.template.html',
    resolve : {
        foo : function(FooService) {
            return FooService.getFoo();
        },
    },
    controller: 'MyController',
})

继续采用这种方法,你的路就很好了。

希望有帮助。

编辑:建立了一个plunker http://plnkr.co/edit/LuP6nzucnXaq306qTVIL?p=preview添加论文方法的具体示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AngularJS 中对 ui.router 的解析执行 $http get 请求可以吗? 的相关文章