1

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

  $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

}];
4

2 回答 2

2

也许您应该只解析一些参数,然后控制器可以使用 $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) {

//...

或者你能用这个 jsFiddle 来说明你的问题吗?

http://jsfiddle.net/malix/BEscs/

于 2013-08-21T18:00:25.290 回答
0

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

于 2013-08-20T22:36:29.267 回答