AngularJS没有更新http postsuccess中的动态范围变量



我正在尝试从数据库中获取数据并将其分配给带有函数的动态范围变量,但它在第一次尝试时不会将数据分配给动态变量。谁能帮忙?

这是我的动态范围函数;

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

这是邮政服务功能;

$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);
});
};

当我称邮政服务为

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

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

将$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);
});

最新更新