javascript-无法访问angularjs中http响应回调函数之外的$scope对象
作者:互联网
我有这个控制器,用于保存个人的一些详细信息.我有一个单独的存储库EntityRepository,其中定义了从数据库获取用户性别的函数.
函数响应正常工作,并且在函数响应内的控制台上打印性别时,它起作用了(console.log(“ inside:”,$scope.userGender);).
但是在函数之外,值不是不确定的,我正在获取(console.log(“ outside:”,$scope.userGender);)
.controller('individualDetailsCtrl', function($scope, $rootScope, $location, EntityRepository) {
$scope.userGender = "";
$scope.entity = {
name: "",
gender: $scope.userGender,
dob: "",
pan: ""
};
EntityRepository.getUserGender()
.then(function(response){
$scope.userGender = response.data.gender;
console.log("inside : ", $scope.userGender);
})
.catch(function(errorResponse) {
$scope.error = errorResponse.data
});
console.log("outside : ", $scope.userGender);
});
我想将响应中的性别保存在$scope.entity.gender中,但无法在函数范围之外访问$scope.userGender的值.
因为$scope是在控制器范围内定义的,所以我认为它应该能够在函数响应之外访问其值.
解决方法:
您无法在AJAX成功回调之外访问$scope.userGender值的原因很简单:AJAX是异步的,这意味着仅在此AJAX调用成功后才为该变量分配值.您应该调整您的代码,以使其在此AJAX调用成功之前不依赖于$scope.userGender的值.如果此值是数据绑定到标记中的某个控件,则这不是问题,当从服务器检索该值时,该值会出现一点延迟.
标签:javascript,angularjs,angularjs-scope 来源: https://codeday.me/bug/20191010/1885670.html