문제

저는 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
.

?

두 번째는 성공 () 콜백이므로 첫 번째 뒷면에 훨씬 늦게 실행할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top