首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS未在http post成功中更新动态范围变量

AngularJS未在http post成功中更新动态范围变量
EN

Stack Overflow用户
提问于 2019-09-15 05:17:08
回答 1查看 57关注 0票数 0

我尝试从数据库获取数据,并使用函数将其分配给动态范围变量,但它在第一次尝试时不会将数据分配给动态变量。有人能帮上忙吗?

这是我的dynamicScope函数;

代码语言:javascript
复制
$scope.dynamicScope= function(name, data){
  var modelScope = $parse(name);
  modelScope.assign($rootScope, data);
};

这是postService函数;

代码语言:javascript
复制
$scope.postService = function(scopeName, sentData){
    $http.post($scope.serviceLink, sentData)
            .success(function (data, status) {
              console.log("Fetched data: " + data);
              $scope.dynamicScope(scopeName, data);
            })
            .error(function (errData, status) {
               console.log("Error: "+errData);
            });
};

当我将postService调用为

代码语言:javascript
复制
$scope.postService("userInfo", loginData);

它打印postService中的数据,但是当我想打印前一行之后的数据时,它会给出一个错误,比如这里,console.log($scope.userInfo[0].user_name);,它说$scope.userInfo是未定义的。但它会在第二次尝试中获取先前的数据。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-15 07:22:33

将$http promise返回给函数:

代码语言:javascript
复制
$scope.postService = function(scopeName, sentData){
    ͟r͟e͟t͟u͟r͟n͟ $http.post($scope.serviceLink, sentData)
            .then(function (response) {
              var data = response.data;
              console.log("Fetched data: " + data);
              $scope.dynamicScope(scopeName, data);
              return response.data;
            })
            .catch(function (response) {
               var errData = response.data;
               console.log("Error: "+errData);
               throw response;
            });
};

然后用这个承诺来延迟console.log

代码语言:javascript
复制
var promise = $scope.postService("userInfo", loginData);
promise.then(function(data) {
    console.log(data);
    console.log($scope.userInfo[0].user_name);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57939319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档