我尝试从数据库获取数据,并使用函数将其分配给动态范围变量,但它在第一次尝试时不会将数据分配给动态变量。有人能帮上忙吗?
这是我的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是未定义的。但它会在第二次尝试中获取先前的数据。提前谢谢。
发布于 2019-09-15 07:22:33
将$http promise返回给函数:
$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);
});https://stackoverflow.com/questions/57939319
复制相似问题