Promessa de resources do AngularJS

Eu tenho um controlador simples que usa $ resource:

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

Estou usando este controlador em uma diretiva (na function de link)

 var regions = scope.regions; 

Mas as regiões são indefinidas. É bastante lógica a chamada ser assíncrona.

Minha pergunta é como posso fazer para esperar o resultado e regiões ser uma matriz com todos os dados?

 UPDATE : 

Aqui a definição da diretiva

 app.directive('ngMap', function() { return { restrict: 'EA', replace: 'true', scope: { }, template: '
', controller: 'AccordMapCtrl', link: function(scope, element, attrs) { var regions = scope.regions; console.log(regions); for (var region in regions) {} }; });

Se você quiser usar o método asynchronous, você precisa usar a function callback por $ promise, aqui é exemplo:

 var Regions = $resource('mocks/regions.json'); $scope.regions = Regions.query(); $scope.regions.$promise.then(function (result) { $scope.regions = result; }); 

Se você está procurando uma promise na chamada de resources, você deve usar

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

Atualização: a syntax da promise é alterada nas versões atuais, que lê

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

Aqueles que têm downvoted não sabem o que foi e quem primeiro adicionou essa promise ao object de recurso. Eu usei esse recurso no final de 2012 – sim 2012.

Você também pode fazer:

 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; });