2017-10-13 92 views
1

如何处理来自给定提琴手的这段代码片段。迭代期间处理rest API angularjs

for (var i = 0; i < carList.length; i++) { 
    $http.get("accesoriesList.htm").then(function(accesories) { 
     $scope.accesoriesList.push({"id": carId, "name": carName, "accesories" : accesories}); 
} 

提琴手 https://jsfiddle.net/gsk/euuhsowu/

我试图让汽车的配件清单。 但我得到不同的问题:

  1. REST调用被解雇异步并没有设置配件,以各自的汽车项目
  2. 我希望基于自其他API乘用车项目设置配件迭代已经解雇,但我只得到一个设置给所有配件的回应。
  3. Rest API在迭代中被触发,所以我期望得到carList.length响应,而不是我得到一个响应。
+0

你如何认识到你只有一个回应你的小提琴不能正常工作 – jitender

+0

Ofcourse提琴手是样品。我把警报消息,以检查它在我的应用程序中的响应返回。 – Pez

回答

0

你应该总是认为异步。 顺序异步调用应放在以前的回调函数中。

所以第二个API调用(accesoriesList.htm)应该是第一回调中:

var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope, $http) { 
    $scope.carList = []; 
    $scope.accesoriesList = []; 

    $http.get("carList.htm").then(function(data) { 
     for (var i = 0; i < data.length; i++) { 
      $scope.carList.push({"id": data[i].carId, "name": data[i].carName}); 
     } 

     for (var i = 0; i < $scope.carList.length; i++) { 
     $http.get("accesoriesList.htm").then(function(accesories) { 
      $scope.accesoriesList.push({"id": carId, "name": carName, "accesories" : accesories}); 
     }); 
     } 

    }); 

}); 

也许这只是一个例子,但我认为,第二个电话应该有一定的路由规则接收carId ..