1. ホーム
  2. angularjs

[解決済み] AngularJSのリソースプロミス

2022-02-17 02:19:49

質問

私は、$resourceを使用する簡単なコントローラを持っています。

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

 $scope.regions = Regions.query();

このコントローラをディレクティブの中で(link関数の中で)使っています。

var regions = scope.regions;

しかし、地域は未定義です。非同期呼び出しであることは間違いないでしょう。

私の質問は、結果を待つためにどうすればいいのか、そして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;
});