IE8对象不支持属性或方法'on' - object.listenTo - (Backbone.js)

时间:2013-05-09 15:09:09

标签: javascript backbone.js internet-explorer-8

IE8兼容我的javascript代码存在一些问题,我似乎无法用完。该代码在IE9 +,Chrome和FF中运行良好。我有一个backbone.js集合,它正在收听一系列其他骨干集合,以便对其模型进行更改。 IE 8在应用事件侦听器时发出错误。代码是;

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

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

上面的代码块位于主干collection.extend的初始化函数中。

this.referenceTables先前已在初始化函数中使用

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

我有点难过所以任何想法都会非常感激!

1 个答案:

答案 0 :(得分:2)

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

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

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

如果你在那里贴上console.log(k),你会发现它不仅仅是0...N