我想在另一个中调用一个函数。
要调用的函数返回true或false:
$scope.verifsubdir = function(dir, tocheck) {
$http({method: 'GET', url: '/checkIsSubdir/'+dir+'/'+tocheck})
.success(function(result) {
return result.data;
})
.error(function(result) {
console.log("checksubdir oops");
});
};
另一个函数中的函数调用:
$scope.CopyFiles = function(destination) {
for(var i=0; i<$scope.list.length; i++) {
console.log($scope.verifsubdir($scope.list[i],destination));
};
}
但我总是得到undefined
。
然而,当我合并这两个函数时,我得到了真或假:
$scope.CopyFiles=function(destination){
for(var i=0; i<$scope.list.length; i++){
$http({method: 'GET', url:
'/checkIsSubdir/'+$scope.list[i]+'/'+destination})
.success(function(result) {
console.log("checkdir "+result.data);
})
.error(function(data, status, headers, config) {
console.log("checksubdir oops");
});
}
};
我希望他们分开。如何解决这个问题?
答案 0 :(得分:0)
在$http
调用中返回一个承诺,你应该做这样的事情:
$scope.verifsubdir($scope.list[i],destination).then(function(resp) {
console.log(resp);
// assuming the response returns a boolean
$scope.list[i].verified = resp
});
答案 1 :(得分:0)
使用Angular中的$http
会给你一个Promise(你可以在the documentation for $q中阅读更多关于它们的内容),并且不会让你的函数自己返回任何值(这就是你得到的原因) undefined
)。
您的第一个函数需要返回承诺,然后您需要在.success(...)
函数中添加其他.error(...)
或CopyFiles
个回调:
$scope.verifsubdir = function (dir, tocheck) {
// Simply add return in front of $http here.
return $http(...
};
$scope.CopyFiles = function (destination) {
for (var i = 0; i < $scope.list.length; i++) {
$scope.verifsubdir($scope.list[i], destination).success(function (result) {
console.log("checkdir " + result.data);
});
}
};