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