我使用PHP将数据导入我的工厂,这在控制器内的成功回调函数中正确显示。但是,即使在将返回的数据分配给$ scope.customers之后,如果我在回调之后执行console.log($ scope.customers),并且我的视图[ng-repeat],它就不存在了。也没有把它捡起来。
如果我将返回的数据分配给我的$ scope对象,我知道为什么我的数据范围仅限于成功回调内部?
var customersController = function($scope, customersFactory) {
$scope.customers = [];
customersFactory.getAllData()
.success(function(customers) {
$scope.customers = customers;
console.log($scope.customers); // Object with correct data
}); // No errors so only showing happy path
console.log($scope.customers); // empty []
};
customersModule.controller('customersController', ['$scope', 'customersFactory', customersController]);
答案 0 :(得分:2)
$ http函数异步发生。因此,在customersFactory.getAllData
之后调用console.log将始终为空。
console.log($scope.customers); // Object with correct data
实际上发生在
之后 console.log($scope.customers); // empty []
您可以信任成功回调以正确设置$scope.customers
,您只需要您的网站了解它将在以后发生。如果您需要在加载视图之前填充scope.customers,请考虑在控制器上使用resolve。
答案 1 :(得分:0)
难道不是'吨
console.log($scope.customers); // empty []
在
之前执行console.log($scope.customers); // Object with correct data
第二个是成功()回调,所以它可以比第一个回执晚得多。