angularjs - example - promesas en angular 6
La promesa de recursos de AngularJS (4)
Si buscas una promesa en la llamada de recursos, debes usar
Regions.query().$q.then(function(){ .... })
Actualización: la sintaxis de promesa se cambia en las versiones actuales que lee
Regions.query().$promise.then(function(){ ..... })
Aquellos que han votado negativamente no saben de qué se trataba y quienes primero agregaron esta promesa al objeto de recurso. Usé esta función a finales de 2012, sí 2012.
Tengo un controlador simple que usa $ resource:
var Regions = $resource(''mocks/regions.json'');
$scope.regions = Regions.query();
Estoy usando este controlador en una directiva (en la función de enlace)
var regions = scope.regions;
Pero las regiones no están definidas. Es bastante lógico que la llamada sea asincrónica.
Mi pregunta es ¿cómo puedo esperar para que el resultado y las regiones sean una matriz con todos los datos?
UPDATE :
Aquí la definición de la directiva
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) {}
};
});
Si desea usar un método asíncrono, necesita usar la función de devolución de llamada por $ promise, aquí tiene un ejemplo:
var Regions = $resource(''mocks/regions.json'');
$scope.regions = Regions.query();
$scope.regions.$promise.then(function (result) {
$scope.regions = result;
});
También podrías hacer:
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;
});