AngularJS 未更新 http 中的动态范围变量 post 成功
AngularJS is not updating dynamic scope variable in http post success
我正在尝试从数据库中获取数据并将其分配给具有函数的动态范围变量,但它不会在第一次尝试时将数据分配给动态变量。有人可以帮忙吗?
这是我的 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 未定义。但它会在第二次尝试中获取以前的数据。提前致谢。
Return $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);
});
我正在尝试从数据库中获取数据并将其分配给具有函数的动态范围变量,但它不会在第一次尝试时将数据分配给动态变量。有人可以帮忙吗?
这是我的 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 未定义。但它会在第二次尝试中获取以前的数据。提前致谢。
Return $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);
});