$ scope.compdata值是在函数内打印。但不是在外面的功能。
$scope.compdata="";
$scope.fetchCompanies = function() {
Company.get({
arg1 : 'list',
arg2 : 14
}, function(success) {
// console.log(success);
$scope.compdata = success.data;
console.log($scope.compdata);
});
};
$scope.fetchCompanies(); //
console.log("outside : ", ?);
答案 0 :(得分:1)
您需要了解Promise如何在JavaScript中运行。我假设Company.get
是一个AJAX调用,并且因为AJAX调用是异步的,所以在调用之后打印结果将不起作用。
相反,您可以尝试这种方法:
$scope.compdata = "";
$scope.fetchCompanies = function() {
return Company.get({ // Notice this line
arg1 : 'list',
arg2 : 14
}, function(success) {
$scope.compdata = success.data;
console.log($scope.compdata);
return Promise.resolve(success.data); // and this line
}).$promise; // and this line
};
$scope.fetchCompanies()
.then(function(data) { // and this block
console.log("outside : ", data);
});
上面的代码从函数中返回promise本身,以便您可以提供.then()
并对响应执行某些操作。希望有所帮助。
答案 1 :(得分:0)
您需要使用$ q服务:
$scope.compdata = "";
$scope.fetchCompanies = function() {
var deferred = $q.defer();
Company.get({
arg1 : 'list',
arg2 : 14
}, function(success) {
$scope.compdata = success.data;
console.log($scope.compdata);
deferred.resolve(success.data); //Edited here
});
return deferred.promise;
};
$scope.fetchCompanies()
.then(function(data) { // and this block
$scope.compdata = data; //Added
console.log("outside : ", $scope.compdata);
});
在控制器中注入$ q作为DI