合并来自不同来源的两个SCOPES(相同构造)

时间:2017-01-16 00:51:48

标签: angularjs merge angularjs-scope remote-server

我有一个功能

var getData = function() {
    $http.get('(url of remote site)/swi/20?expand=true').success(function (data) {
        $scope.listOfServices = data.runningServices;
    });
};

每30秒更新一次并提取服务列表。

但是,我想扩展这个也来自

$http.get('(url of remote site)/**pad**/20?expand=true') 

和$

http.get('(url of remote site)/**bri**/20?expand=true') 
例如

然后将rusults(全部采用完全相同的格式)合并到ONE $ scope

如何将这些HTTP获取与URL中的三个不同端点合并?

编辑:按照第一条评论中的链接,我提出了这个

var getData = function() {
        var swindon = $http.get('(url)/swi/10?expand=true'),
            paddington = $http.get('(url)/pad/10?expand=true'),
            reading = $http.get('(url)/rdg/10?expand=true');
        $q.all([swindon,paddington,reading]).then(function(arrayOfResults) {
            $scope.listOfServices = arrayOfResults;
            console.log($scope.listOfServices);
        });
    };

  getData();

但现在的问题是我有一个我无法以任何方式访问的数组。我甚至在重复中做了一次重复

以下是带有记录范围的Google COnsole的屏幕截图

enter image description here

我通常循环遍历listOfServices.trainServices

最终编辑:

得到它,在循环中正确使用循环,即

<tbody ng-repeat="item in listOfServices">
      <tr ng-repeat="service in item.data.trainServices">

1 个答案:

答案 0 :(得分:1)

您可以嵌套通话,如下所示:

$scope.listOfServices = [];
$http.get('(url of remote site)/swi/20?expand=true')
.success(function (data, status, headers, config) {
  $scope.listOfServices.concat(data.runningServices);

  $http.get('(url of remote site)/pad/20?expand=true')
  .success(function (data, status, headers, config) {
    $scope.listOfServices.concat(data.runningServices);

    //nest Another and so on...
    //$http.get('(url of remote site)/bri/20?expand=true')..
  });

})
.error(function (data, status, headers, config) {$scope.listOfServices = [];});

或使用已解决的承诺,如下面的答案所示:

angular -- accessing data of multiple http calls - how to resolve the promises

相关问题