编程语言
首页 > 编程语言> > javascript-无法访问angularjs中http响应回调函数之外的$scope对象

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