我正在使用 angular Promise 来执行依赖于从数据库中获取的数据数组的函数。
我使用了 resolve 和 promise 来做到这一点,如下所示。
function Mainctrl($q,MyService){
var defer=$q.defer();
defer.promise
//The data im receiving in promise is from the resolve "MyService.getAll({ID :ID})"
.then(function(data){
$scope.mydata=data;
$scope.mylength=$scope.mydata.length;
console.log();
});
//This code MyService.getAll({ID :ID}) returns an array from the database, i am using that result array in promise as "data"
defer.resolve(MyService.getAll({ID :ID}));
}
问题是在填充数据数组之前执行承诺总是将长度显示为 0。但是 ii 使用超时而不是承诺,填充数据数组并正确显示长度。
MyFactory 方法 getAll 是
app.factory("MyService", function($resource, $http) {
var resource = $resource("/rest/:ID ", { ID : "@_ID " },
{
'create': { method: 'POST' },
'getAll': { method: 'GET', isArray: true },
'get': { method: 'GET', isArray: false },
'update': { method: 'PUT' },
'destroy': { method: 'DELETE' }
}
);
return resource;
});