为什么我在使用 Angular 的 forEach 循环中无法访问工厂中的数组?
Why can I not access an array in factory while I am in a forEach loop with Angular?
我有以下问题:为什么我无法使用 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;
})
}
}
})
也许这会有所帮助。 Angular lets you set the context(本)在 forEach
。这是争论之一。您不必设置任何其他变量:
angular.forEach(obj, iterator, [context]);
您已通过 obj
和 iterator
。只需为 context
传递一些内容,这将是函数中的 this
。
我有以下问题:为什么我无法使用 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;
})
}
}
})
也许这会有所帮助。 Angular lets you set the context(本)在 forEach
。这是争论之一。您不必设置任何其他变量:
angular.forEach(obj, iterator, [context]);
您已通过 obj
和 iterator
。只需为 context
传递一些内容,这将是函数中的 this
。