AngularJS资源承诺

我有一个简单的控制器使用$资源:

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

我在一个指令中使用这个控制器(在链接函数中)

 var regions = scope.regions; 

但地区是不确定的。 这是相当逻辑的调用是asynchronous的。

我的问题是我怎么能等待结果和地区是一个数组与所有数据?

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

如果你想使用asynchronous方法,你需要使用$ promise的callback函数,例如:

 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年末使用了这个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; });