我有以下代码
$scope.getBooksByUser = function (user) {
var books = [];
ProductFactory.getBooks.query({ id: user.id }).$promise.then(function (result) {
angular.forEach(result, function(i) {
books.push(i.name);
debugger;
})
});
};
正如您所看到的,我正在尝试以角度为每个填充一个简单的javascript数组。执行此函数时,数组books
仍为空。
我对此行为感到困惑,因为当我尝试调试我的代码时,我可以看到每个迭代值都在数组中设置。实际上chrome调试器向我显示数组books
在closure scope
中,我猜这是一个原因,但我仍然无法找到解释以及我如何解决它。
实际上如果我使用$scope.books = []
它会工作正常,但我不需要$scope
,但我只需要一个javascript数组。
提前致谢。
答案 0 :(得分:0)
我想这是因为asynchronous
调用AJAX
而发生的事情。在您的情况下,编译器不会等待您的ajax响应。你应该像
ProductFactory.getBooks.query({ id: user.id }).$promise.success(function (result) {
angular.forEach(result, function(i) {
books.push(i.name);
debugger;
})
});
希望它有所帮助: - )