it-source

AngularJS 자원 약속

criticalcode 2023. 2. 16. 21:47
반응형

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(){ .... })

업데이트 : 다음과 같은 현재 버전에서 약속 구문이 변경되었습니다.

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

다운 투표한 사람들은 그것이 무엇이었는지, 그리고 누가 자원 오브젝트에 이 약속을 처음 추가했는지 모른다.2012년 말에 이 기능을 사용했습니다.네, 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

반응형