每个带闭合范围变量

时间:2015-07-03 16:41:23

标签: javascript angularjs

我有以下代码

$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调试器向我显示数组booksclosure scope中,我猜这是一个原因,但我仍然无法找到解释以及我如何解决它。

实际上如果我使用$scope.books = []它会工作正常,但我不需要$scope,但我只需要一个javascript数组。

提前致谢。

1 个答案:

答案 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;
        })
    });

希望它有所帮助: - )