2

IE8 与我的 javascript 代码的兼容性存在一些问题,我似乎无法运行。该代码在 IE9+、Chrome 和 FF 中运行良好。我有一个主干.js 集合,它正在侦听一系列其他主干集合以了解其模型的变化。IE 8 在应用事件侦听器时出错。代码是;

for(var k in this.referenceTables){
   this.listenTo(this.referenceTables[k], 'change', this.fetch);
}

和 IE8(注意:IE8 浏览器模式下的 IE10,文档模式 IE8 标准)在控制台中返回错误对象不支持上述代码第 2 行的属性或方法“on”。

上面的代码块在骨干collection.extend的初始化函数中。

this.referenceTables 之前在初始化函数中分配有

this.referenceTables = options.referenceTables // options.referenceTables is an array of backbone collections

我有点难过,所以任何想法都将不胜感激!

4

1 回答 1

2

for...in用于迭代对象的所有可枚举属性,如果要迭代数组中的值,即referenceTables应使用普通for循环。

for(var k = 0; k < this.referenceTables.length; k++){

问题是您的for...in循环正在从您的数组对象中拾取其他不是数组项的东西,因此不是模型。

如果您将 a 插入console.log(k)其中,您会发现它不只是0...N.

于 2013-05-09T15:19:09.757 回答