一旦我调用的函数(执行对服务器的调用)完成,我想做一些处理。
我试过了:
vm.myFunction().$promise.then(function(){
//some treatment done once vm.myFunction() is finished....
})
vm.myFunction = function(){
var deferred = $q.defer();
myResource.get(function(result){
vm.results = result;
for (var i=0; i<vm.results.length;i++){
if (vm.results[i].state == 'open'){
deferred.resolve();
return deferred.promise;
}
}
})
};
但我得到了一个
angular.js:13294 TypeError:无法读取属性'$ promise' 未定义
我该怎么做?
答案 0 :(得分:3)
您必须在函数末尾返回deferred.promise。
vm.myFunction = function(){
var deferred = $q.defer();
myResource.get(function(result){
vm.results = result;
for (var i=0; i<vm.results.length;i++){
if (vm.results[i].state == 'open'){
deferred.resolve();
}
}
});
return deferred.promise;
};
答案 1 :(得分:0)
试试这段代码,
vm.myFunction().then(function(){
//some treatment done once vm.myFunction() is finished....
})
vm.myFunction = function(){
var deferred = $q.defer();
myResource.get(function(result){
vm.results = result;
for (var i=0; i<vm.results.length;i++){
if (vm.results[i].state == 'open'){
deferred.resolve();
}
}
})
return deferred.promise;
};
答案 2 :(得分:0)
感谢你的所有答案,我设法使用:
vm.myFunction = function(){
return myResource.get(function(result){
vm.results = result;
for (var i=0; i<vm.results.length;i++){
if (vm.results[i].state == 'open'){
//....
}
}
})
};