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