Nice programing

AngularJS 리소스 약속

nicepro 2020. 10. 22. 22:48
반응형

AngularJS 리소스 약속


$ resource를 사용하는 간단한 컨트롤러가 있습니다.

 var Regions = $resource('mocks/regions.json');

 $scope.regions = Regions.query();

이 컨트롤러를 지시문 (링크 기능)에서 사용하고 있습니다.

var regions = scope.regions;

그러나 지역은 정의되지 않았습니다. 호출이 비동기적인 것은 꽤 논리입니다.

내 질문은 결과를 기다릴 수 있고 영역이 모든 데이터가있는 배열이 될 수 있습니까?

UPDATE : 

여기에 지시문의 정의

app.directive('ngMap', function() {
  return {
    restrict: 'EA',
    replace: 'true',
    scope: {

    },
    template: '<div id="map"></div>',
    controller: 'AccordMapCtrl',
    link: function(scope, element, attrs) {
      var regions = scope.regions;
      console.log(regions);

      for (var region in regions) {}
    };
  });

비동기 메서드를 사용하려면 $ promise의 콜백 함수를 사용해야합니다. 예는 다음과 같습니다.

var Regions = $resource('mocks/regions.json');

$scope.regions = Regions.query();
$scope.regions.$promise.then(function (result) {
    $scope.regions = result;
});

리소스 호출에서 약속을 얻으려면 다음을 사용해야합니다.

Regions.query().$q.then(function(){ .... })

업데이트 : 현재 버전에서 promise 구문이 변경되었습니다.

Regions.query().$promise.then(function(){ ..... })

반대표를 던진 사람들은 그것이 무엇인지, 그리고이 약속을 자원 객체에 처음 추가 한 사람을 모릅니다. 2012 년 말에이 기능을 사용했습니다.


다음을 수행 할 수도 있습니다.

Regions.query({}, function(response) {
    $scope.regions = response;
    // Do stuff that depends on $scope.regions here
});

/*link*/
$q.when(scope.regions).then(function(result) {
    console.log(result);
});
var Regions = $resource('mocks/regions.json');
$scope.regions = Regions.query().$promise.then(function(response) {
    return response;
});

참고 URL : https://stackoverflow.com/questions/19490560/angularjs-resource-promise

반응형