Javascript ExtJs 5.0:IE8中不工作的对象数组上的forEach
我有一个简单的模型-Javascript ExtJs 5.0:IE8中不工作的对象数组上的forEach,javascript,internet-explorer,extjs,foreach,extjs5,Javascript,Internet Explorer,Extjs,Foreach,Extjs5,我有一个简单的模型- Ext.define('MyModel', { extend: 'Ext.data.Model', requires: [ 'Ext.data.field.String' ], fields: [ { type: 'string', name: 'currentA' }, { type: 'string'
Ext.define('MyModel', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.field.String'
],
fields: [
{
type: 'string',
name: 'currentA'
},
{
type: 'string',
name: 'currentB'
},
{
name: 'A'
},
{
name: 'B'
}
]
});
{
"currentA": "a",
"currentB": "b",
"A": [
{
"name": "a",
"id": 1
}
],
"B": [
{
"name": "b",
"id": 2
}
]
}
下面是我对该模型的数据所做的一些操作-
onBeforeRender: function(component, eOpts) {
var mystore = Ext.getStore('Mystore');
mystore.load({
callback: function(){
var entity = headerStore.getAt(0);
var bs = entity.data.B;
var as = entity.data.A;
var currentB = entity.data.currentB;
var currentA = entity.data.currentA;
bs.forEach(function(record) {
// do some operations
});
as.forEach(function(record) {
// do some other operations
});
}
});
}
现在,当迭代变量“bs”(显然是一个对象数组)时,IE 8会抱怨
“对象不支持此属性或方法”
对于forEach函数。这在铬上很好用
以下是模型的json-
Ext.define('MyModel', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.field.String'
],
fields: [
{
type: 'string',
name: 'currentA'
},
{
type: 'string',
name: 'currentB'
},
{
name: 'A'
},
{
name: 'B'
}
]
});
{
"currentA": "a",
"currentB": "b",
"A": [
{
"name": "a",
"id": 1
}
],
"B": [
{
"name": "b",
"id": 2
}
]
}
为什么IE不能将其识别为数组?因为IE8没有在数组上实现forEach 使用
Ext.Array.forEach
您可以从Ext.Array
使用,因为IE8不支持
[].forEach
不依赖于ExtJS版本,因为这是在ES5
标准中添加的JS数组方法。从中可以看到哪个浏览器支持forEach
方法 Mystore是该模型的存储库。相同的代码已经在IE 8中使用extjs 4.2。您可能已经包含了一些其他库。我没有看到任何外部库。不管怎样,目前这不是问题。我只是好奇。