これは私が取り組んでいるコードです。
appControllers.controller('MyaSellerOrderCtrl', ['$scope', '$rootScope', 'Order', '$http',
function($scope, $rootScope, Order, $http) {
$scope.results = [];
$scope.getData = function() {
$http.get('api/orders/business/?user_id=' + $rootScope.user.user_id).success(function(data){
for (var i = 0; i < data.length; i++) {
$http.get('api/orders/seller/?business_id=' + data[i].business_id).success(function(data1){
// console.log(data1);
$scope.results[i] = data1;
});
}
console.log($scope.results);
});
};
$scope.getData();
}]);
問題は、関数が正常に動作しているのに $scope.results が空であることです。$http の非同期性が原因であると言う人もいます。エラーを回避するために promise を使用するようにコードを変更できますか?
今、私は示されているようにコードを更新しました
appControllers.controller('MyaSellerOrderCtrl', ['$scope', '$rootScope', '$http','$q',
function($scope, $rootScope, $http, $q) {
$scope.results = [];
function _getOrdersById(id) {
return $http.get('api/orders/business/?user_id=' + id);
}
function _parseOrders(orders) {
var _promises = [];
orders.forEach(function (order, index) {
var _promise = $http.get('api/orders/seller/?business_id=' + order.business_id).then(function (response) {
$scope.results[index] = response;
});
_promises.push(_promise);
});
return $q.all(_promises);
}
$scope.getData = function () {
_getOrdersById($rootScope.user.user_id)
.then(_parseOrders)
.then(function () {
console.log($scope.results);
}, function (error) {
console.error(error);
});
};
$scope.getData();
}
]);
しかし、それでもエラーが表示されます
ラインへの159ラインポイント
orders.forEach(function(order,index) {