为什么当我使用 Angular 在 forEach 循环中时,我无法访问工厂中的数组



我有以下问题:为什么我无法使用 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;
                })
        }
    }
})

也许这会有所帮助。Angular 允许您在 forEach 中设置上下文(this)。这是论点之一。您不必设置任何其他变量:

angular.forEach(obj, iterator, [context]);

你已经通过了objiterator.只需为context传递一些东西,这将this在函数中。

因为函数的上下文发生了变化 - 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;
                    })
            }
        }
    })

最新更新