我有一个数组,我需要迭代才能获得一个值。
someFunc: function(item) {
var array = Ext.select(".item").elements;
var elements;
var itemId = item.id;
Ext.each(array, function(ob){
if (ob.id === itemId) {
elements = ob.getElementsByTagName("input");
Ext.each(elements, function(att){
if (att.getAttribute("name") === "filter") {
console.log(att);
this.callFunction();
// here I want to call a function to do some stuff
// but `"this"` here refers to input element
//I should be able to call the function outside the someFunc, but I'm loosing scope
}
});
}
});
},
callFunctionL function() {
}
如何在迭代数组数组时保持范围?
答案 0 :(得分:6)
有两种方式:
a)将scope
参数传递给每个参数:
Ext.each(o, function() {
console.log(this);
}, this);
b)在闭包中捕获范围:
var self = this;
Ext.each(o, function() {
console.log(self);
});