AngularJS:$http 성공 콜백의 범위 문제
문제
저는 PHP를 사용하여 데이터를 공장으로 가져오고 있는데, 이는 컨트롤러 내의 성공 콜백 함수에 올바르게 표시됩니다.그러나 반환된 데이터를 $scope.customers에 할당한 후에도 콜백 후에 console.log($scope.customers)를 수행하면 데이터가 없으며 내 뷰의 [ng-repeat]도 이를 선택하지 않습니다.
반환된 데이터를 $scope 객체에 할당하는 경우 데이터 범위가 성공 콜백 내부로 제한되는 이유가 무엇인지 아시나요?
var customersController = function($scope, customersFactory) {
$scope.customers = [];
customersFactory.getAllData()
.success(function(customers) {
$scope.customers = customers;
console.log($scope.customers); // Object with correct data
}); // No errors so only showing happy path
console.log($scope.customers); // empty []
};
customersModule.controller('customersController', ['$scope', 'customersFactory', customersController]);
해결책
$http 함수는 비동기적으로 발생합니다.따라서 console.log를 호출한 후에 customersFactory.getAllData
항상 비어 있을 것입니다.
console.log($scope.customers); // Object with correct data
실제로는 AFTER 이후에 발생하고 있습니다.
console.log($scope.customers); // empty []
성공 콜백을 신뢰할 수 있습니다. $scope.customers
맞습니다. 나중에 일어날 일을 이해하려면 사이트가 필요합니다.뷰가 로드되기 전에scope.customers를 채워야 하는 경우 컨트롤러에서 확인 사용을 고려하세요.
다른 팁
는
가 아닙니다console.log($scope.customers); // empty []
.
이전 실행
console.log($scope.customers); // Object with correct data
.
?
두 번째는 성공 () 콜백이므로 첫 번째 뒷면에 훨씬 늦게 실행할 수 있습니다.
제휴하지 않습니다 StackOverflow