0

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

这是我的 dynamicScope 函数;

$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 未定义。但它会在第二次尝试中获取先前的数据。提前致谢。

4

1 回答 1

0

将 $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);
});
于 2019-09-14T23:22:33.230 回答