Angular JS - 在一个控制器中运行两个函数

时间:2015-08-24 13:13:24

标签: javascript angularjs

我对AngularJS很新,所以请提前道歉。

var tcores = 0;

angular.module('core').controller('HomeController', ['$scope', '$http',
  function($scope, $http) {
    $http.get('search?idc=LH5&type=Virtual&cluster=1').success(function(data) {
      $scope.servers = data; // get data from json
      angular.forEach($scope.servers, function(item){
        //console.log(item.cores);
        if(parseInt(item.cores) != "NaN" && item.cores != "") {
          if(angular.isNumber(parseInt(item.cores))) {
            tcores = parseInt(tcores) + parseInt(item.cores);
          }
        }
      })
      console.log("Hall 5. Cluster 1 Total Cores: " + tcores);
    });
  }
]);

angular.module('core').controller('HomeController', ['$scope', '$http',
  function($scope, $http) {
    $http.get('search?idc=LH5&type=Virtual&cluster=2').success(function(data2) {
      $scope.serverscluster = data2; // get data from json
      angular.forEach($scope.serverscluster, function(item){
        //console.log(item.cores);
        if(parseInt(item.cores) != "NaN" && item.cores != "") {
          if(angular.isNumber(parseInt(item.cores))) {
            tcores = parseInt(tcores) + parseInt(item.cores);
          }
        }
      })
      console.log("Hall 5. Cluster 2 Total Cores: " + tcores);
    });
  }
]);

我正在尝试运行这两个函数(两者都指向不同的JSON输出),但是我只收到“cluster 2”的响应。

请告知我如何在同一模块中运行这两个功能,理想情况下,我将在同一页面上运行其中8个请求,因此建议最受欢迎。#

你能告诉我的为什么只有底部函数正在执行吗?

非常感谢!

2 个答案:

答案 0 :(得分:3)

正如我在评论中写的那样,你必须将$http.get链接在一起,你必须避免重复的控制器名称。这是一个简化的代码:

angular.module('core').controller('HomeController', ['$scope', '$http',

function ($scope, $http) {
    $http.get('search?idc=LH5&type=Virtual&cluster=1').then(function (data) {
        console.log(data);
        return $http.get('search?idc=LH5&type=Virtual&cluster=2');
    }).then(function(data2) {
        console.log(data2);
        $scope.serverscluster = data2; // get data from json
    });
}]);

这是一个JSFiddle

答案 1 :(得分:0)

为什么不想在单个控制器中调用您的函数:

trade_id