我有以下问题:为什么我无法使用 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]);
你已经通过了obj
和iterator
.只需为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;
})
}
}
})