如何从其他控制器调用$ http.post?

时间:2014-10-16 06:18:54

标签: javascript jquery angularjs angularjs-directive angularjs-scope

我在下面有这个控制器。在页面加载时,执行下面看到的$ http服务。

现在,如何从其他控制器调用并执行控制器的$ http.post(...)部分。


 controller: function ($scope, $element, $http) {

    function par() {               
        var xxx= null;
        xxx = $scope.$parent.$root.ParentItems['xxx'].xxx;
        var det = { xxx: xxx};              
        return det;
    }


 $http.post('/api/values/entries/GoHere', par()).success(function (salData) {

      var buildSHGraph = function (shData) {
        //code code codes...
      }

      $scope.Array1 = [];

      angular.forEach(salData, function (evt) {
         //Code Code Codes
      });

     buildSHGraph($scope.Array1);

 });

 }

1 个答案:

答案 0 :(得分:5)

您可以创建共享服务

angular.module("yourAppName", []).
    factory("mySharedService", ['$http', function($http){
        return {
           callPost: function(params) {
               return $http.post('/api/values/entries/GoHere', params)
                    .success()
                    .error();
           }
        };
}]);

然后将其注入任何控制器并调用必要的服务方法。

function FirstController($scope, mySharedService) {
    $scope.params = {//..//};
    $scope.result1 = mySharedService.callPost(params)
                    .success(function(result){//..//});  
}

function SecondController($scope, mySharedService) {
    $scope.params = {//..//};
    $scope.result2 = mySharedService.callPost(params)
                    .success(function(result){//..//});  
}