ExtJs 5.0:forEach on IE8中无效的对象数组

时间:2015-03-06 12:01:12

标签: 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',
            name: 'currentB'
        },
        {
            name: 'A'
        },
        {
            name: 'B'
        }
    ]
});

以下是我对该模型的数据进行的一些操作 -

 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抱怨

"对象不支持此属性或方法"

for forEach函数。这在Chrome中运行良好。

这是模型的json -

{
  "currentA": "a",
  "currentB": "b",
  "A": [
    {
      "name": "a",
      "id": 1
    }
  ],
  "B": [
    {
      "name": "b",
      "id": 2
    }
  ]
}

为什么IE无法将其识别为数组?

2 个答案:

答案 0 :(得分:5)

您可以使用Ext.Array中的.each,因为 IE8 不支持.forEach

Ext.Array.each(bs, function(record) {
});

Ext.Array.each(as, function(record) {
});

[].forEach不依赖于ExtJS版本,因为这是在ES5标准中添加的JS Array方法。从this link,您可以看到哪个浏览器支持forEach方法。

答案 1 :(得分:1)

因为IE8在数组上没有实现forEach

使用Ext.Array.forEach