Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
AngularJs:如何向resolve中的函数发送变量:它执行http请求?_Angularjs_Httprequest_Angularjs Service - Fatal编程技术网

AngularJs:如何向resolve中的函数发送变量:它执行http请求?

AngularJs:如何向resolve中的函数发送变量:它执行http请求?,angularjs,httprequest,angularjs-service,Angularjs,Httprequest,Angularjs Service,所以我在路由器中通过resolve执行http请求,我想知道如何从http请求中的工厂获取值?我的工厂中有一个函数,我想调用它,从中获取一个值,并通过http请求发送该值。有没有办法在resolve函数中注入工厂 $routeProvider .when('/', { redirectTo: '/home' }) .when('/home', { templateUrl: 'views/main_portal.html', cont

所以我在路由器中通过resolve执行http请求,我想知道如何从http请求中的工厂获取值?我的工厂中有一个函数,我想调用它,从中获取一个值,并通过http请求发送该值。有没有办法在resolve函数中注入工厂

  $routeProvider
    .when('/', {
      redirectTo: '/home'
    })
    .when('/home', {
      templateUrl: 'views/main_portal.html',
      controller: MyController15,
      resolve: MyController15.loadAll
        })
    .when('/home/convo', {
      templateUrl: 'views/convo.html',
    })
    .otherwise({
      redirectTo: '/home'
    });


MyController15.loadAll = {
  //I WANT TO PASS A VARIABLE HERE TO USE IN THE PARAMS OBJECT.
  allQ: function($http) {
        return $http({
        url: some_url,
        method: post,
        params: {action: 'someAction', valueToPass: ???????}
      });
    }
};

var MyController15 = ['allQ',
  function(allQ){
//some data manipulation of allQ.data

}];

您应该将http请求重组为服务。可能是您从中获得价值的同一服务。只需确保在服务方法中返回http承诺。

也许您应该解析一些参数,然后控制器就可以使用$http或服务获取您的数据。。。像这样:

$routeProvider.when('/home/:valueToPass', {
                  templateUrl: 'views/main_portal.html',
                  controller: 'MyController15',
                  resolve: {valueToPass: function($route){
                      return $route.current.params.valueToPass;
                  }}
              });     

//...

app.controller('MyController15', function($scope, $http, valueToPass) {

//...
或者您可以使用这个JSFIDLE来说明您的问题吗


问题在于,我需要http请求中的数据,如果我将其放入服务中,我会收到一个未定义的错误,因为在加载视图之前,http请求没有加载。我现在设置它的方式已经解决了在加载数据之前加载视图,然后数据会自动刷新的问题。同样,问题是我如何以同样的方式使用它,但在解析中使用工厂/服务方法。如果您有plunkr或其他东西,这将更容易帮助您,因为我所描述的应该可以工作。