我有以下问题:为什么我无法使用Angular在forEach循环中访问数组。我已经用数组和一个函数使这个工厂工作了,在函数中我有了这个forEach循环。在forEach循环之外,我可以使用this关键字访问数组。在forEach循环中,它给了我一个未定义的值。

.factory("sendOrder", function () {


    return {
        paired: [],

        send: function () {
            var names = document.getElementsByTagName('input');
            var ordered = document.getElementsByClassName('ordered');
            var i = 0;
            console.log(this.paired);//I can access it from here


           angular.forEach(names, function (amount, key) {
            console.log(this.paired);//Unable to access

               i++;
            return;
                })
        }
    }

})

最佳答案

由于函数的上下文发生了变化-this与其原始状态不同。通常的解决方法是将原始上下文设置为可变的(通常称为self):

.factory("sendOrder", function () {


    return {
        paired: [],

        send: function () {
                var self = this;
                var names = document.getElementsByTagName('input');
                var ordered = document.getElementsByClassName('ordered');
                var i = 0;
                console.log(this.paired);//I can access it from here


               angular.forEach(names, function (amount, key) {
                console.log(self.paired);//should be fine now

                   i++;
                return;
                    })
            }
        }
    })

关于javascript - 当我与Angular处于forEach循环中时,为什么不能在工厂中访问数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28181100/

10-11 05:32