我需要多个区域的用户详细信息。我试图使用通用函数返回细节。但我得到的结果为undefined
。据我所知,我需要使用$differed
来获得重新获得。但我对目前的情况一无所知。
有人在这帮助我吗?
这是我的功能:
$scope.currentUserInfo = function () {
var userDetails;
server.getProfile.get().$promise.then(function ( response ) {
if( response.Message.toUpperCase().indexOf('SUCCESS') != -1) {
return userDetails = response;
}
return "Not able to get the user details this time"
})
return userDetails;
}
$scope.currentUser = $scope.currentUserInfo();
console.log( $scope.currentUser ) //undefined.
var function1 = function () {
$scope.currentUserInfo(); //once user details available do further
$scope.age = $scope.currentUser.age;
}
var function2 = function () {
$scope.currentUserInfo(); //once user details available do further
$scope.name = $scope.currentUser.name;
}
答案 0 :(得分:1)
server.getProfile.get()是一个异步调用。
即使return userDetails;
调用尚未完成,$scope.currentUserInfo
函数中的server.getProfile.get()
行也会执行。
试试这个:
$scope.currentUserInfo = function () {
server.getProfile.get().$promise.then(function ( response ) {
if( response.Message.toUpperCase().indexOf('SUCCESS') != -1) {
$scope.currentUser = response;
}
$scope.message = "Not able to get the user details this time";
})
}
在ajax调用完成后,将填充 $scope.currentUser
。我假设您在html绑定中使用$scope.currentUser
,因此当值更改时,它将自动反映在您的视图中