【问题标题】:AngularJS is not updating dynamic scope variable in http post successAngularJS 未在 http post 成功中更新动态范围变量
【发布时间】:2019-09-14 21:17:08
【问题描述】:

我正在尝试从数据库中获取数据并将其分配给具有函数的动态范围变量,但它在第一次尝试时并未将数据分配给动态变量。有人可以帮忙吗?

这是我的动态作用域函数;

$scope.dynamicScope= function(name, data){
  var modelScope = $parse(name);
  modelScope.assign($rootScope, data);
};

这里是postService函数;

$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 称为

$scope.postService("userInfo", loginData);

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

【问题讨论】:

标签: angularjs http-post dynamic-scope


【解决方案1】:

将 $http 承诺返回给函数:

$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

var promise = $scope.postService("userInfo", loginData);
promise.then(function(data) {
    console.log(data);
    console.log($scope.userInfo[0].user_name);
});

【讨论】:

  • 谢谢你的回答,但它仍然不起作用它说TypeError: Cannot read property 'then' of undefined所以这意味着$scope.loginData不能分配给$scope.userInfo
  • 一定要 ͟r͟e͟t͟u͟r͟n͟ $http.postpostService 功能。查看更新以回答。
猜你喜欢
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多