以下代码在我的控制器中 - 当我到达console.log()行时,没有打印出任何内容。 AJAX调用返回一个有效的数组。我尝试使用$ scope。$ apply但我得到了一个进程中的进程错误,我假设因为使用$ http会自动启动摘要周期:
var mmyApp = angular.module('myApp',['ui.bootstrap']).controller('TasksController', TasksController);
function TasksController($scope, $http) {
$scope.transactions = [];
$http.get('transactions').then(function (response) {
$scope.transactions = response.data;
}, function (error) {
throw error;
});
console.log($scope.transactions);
}
答案 0 :(得分:2)
$http.get
是异步的。当您致电console.log
时,您的GET请求尚未返回。您可以在手柄体内移动它以查看它是否有效:
$http.get('transactions').then(function (response) {
$scope.transactions = response.data;
console.log($scope.transactions);
}, function (error) {
throw error;
});
答案 1 :(得分:1)
您应该知道在AngularJS中使用$http进行的AJAX调用是异步的,也就是说,它们不会与其余代码按顺序运行,除非您按照这种方式设置。
因此,当执行console.log
时,请求仍未完成处理。正确的是你在AJAX调用中执行变量赋值后运行console.log
:
var mmyApp = angular.module('myApp',['ui.bootstrap']).controller('TasksController', TasksController);
function TasksController($scope, $http) {
$scope.transactions = [];
$http.get('transactions').then(function (response) {
$scope.transactions = response.data;
console.log($scope.transactions);
}, function (error) {
throw error;
});
}