这是我的角度代码:
samirsoftApp.controller("OrderCtrl",function($scope,$http){
$scope.currentStep=1;
$scope.defaultQuantity=1;
$scope.item={};
$scope.getItem = function(){
$http.get('/test/getItemDetails/')
.success(function(data, status, headers, config) {
$scope.$apply(function(){
$scope.item = data;
});
console.log($scope.item);
})
.error(function(data, status, headers, config) {
console.log(data)
});
};
});
当它请求并获得答案时,它不会更新我的项目对象,所以我使用了$ apply并且它不起作用并抛出错误: 错误:[$ rootScope:inprog] http://errors.angularjs.org/1.3.13/ $ rootScope / inprog?p0 =%24digest S /< @ https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.min.js:6:417 .....
我也试过
$timeout(function() {
$scope.item = data;
}, 0);
而不是$ apply`但它在consol中打印一个空对象
就像这样:
samirsoftApp.controller("OrderCtrl",function($scope,$http,$timeout){
$scope.currentStep=1;
$scope.defaultQuantity=1;
$scope.item={};
$scope.getItem = function(){
$http.get('/test/getItemDetails/')
.success(function(data, status, headers, config) {
$timeout(function() {
$scope.item = data;
}, 0);
console.log($scope.item);
})
.error(function(data, status, headers, config) {
console.log(data)
});
};
});
我应该怎样做才能在http请求后更新我的对象。 感谢
答案 0 :(得分:2)
您可以分配$http.get()
请求返回的数据,如此
$http.get('/test/getItemDetails/')
.success(function(data, status, headers, config) {
$scope.item = data;
console.log($scope.item);
})
.error(function(data, status, headers, config) {
console.log(data);
});
};
$apply
无需角度自动更新$scope
我怀疑问题出在您的代码的其他地方
可能:
function#getItem
包含$http
请求,但您在哪里调用它?/test/getItemDetails/
的调用是
developer tools > network
中查看 404错误 我已更新您的代码 - 演示此处 - http://jsbin.com/notudebiso/1/edit?html,js,output
(使用$ http调用github api)