对不起,任何人都可以帮助我?
我尝试获取有条件的数据以及如果在条件后值不相同的情况下如何获取数据,这是我的数据。
car
[
0:{
id: 1,
subcar:[
0:{id_car:1},
1:{id_car:2}
]
}];
owner
[
0:{
id:1,
id_car:1
},
1:{
id:2,
id_car:2
},
2:{
id:3,
id_car:3
}];
,此处是条件代码更新
example
`app.controller('MainCtrl', function ($scope, $http){
function cars(){
$http.get('api/car').then(function(car){
for(var i = 0; i < car.length; i++)
{
var car1 = car[i].subcar;
for (var j=0; j< car1.length; j++){
$scope.car2 = car1[j].id_car;
}
}
});
}; cars();
function owners(){
$http.get('api/owner').then(function(owner){
for(var i = 0; i < owner.length; i++)
{
var owner1 = owner[i].id_car;
if (owner1 === $scope.car2){
//theen he must get data id_car:3 not exist????
}
}
});
};owners();
});
那么如何在函数所有者的条件之后获取数据id_car:3
?
感谢
答案 0 :(得分:0)
您正在进行2次ajax调用,其中第二次调用的回调依赖于第一次调用的数据。
AJAX调用是异步的,这意味着它们在代码继续执行时在后台运行。在汽车呼叫之后,车主的呼叫直接发生,而汽车请求仍在运行。这种呼叫将首先返回,这几乎是不可预测的。
您需要更改逻辑以在承诺链中执行ajax调用,然后在病房之后进行处理。
function getCarsData() {
return $http.get('api/car'); // this returns a promise, resolved when the ajax call returns
}
function getOwnersData() {
return $http.get('api/owners');
}
$q.all([getCarsData(), getOwnersData()]).then(function (results) {
var car_data = results[0];
var owner_data = results[1];
// you can do your logic here
});
$ q.all接受一系列promise(从ajax调用返回),并返回一个promise,该promise在解析所有promise时解析,将解析值作为数组传递给then回调。
你可能也想做一些错误检查等。