2013-05-09 89 views
2

IE8兼容性問題與我的JavaScript代碼,我似乎無法運行。該代碼在IE9 +,Chrome和FF中運行良好。我有一個backbone.js集合正在傾聽一系列其他主幹集合以改變其模型。 IE 8在應用事件偵聽器時發生錯誤。代碼是;IE8對象不支持屬性或方法'on' - object.listenTo - (Backbone.js)

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

和IE8(注:在IE10 IE8瀏覽器模式下,文件模式IE8標準)在控制檯返回錯誤對象在上面的代碼中的第2行「上」不支持屬性或方法。

上述代碼塊位於主幹collection.extend的初始化函數中。

this.referenceTables是以前在初始化函數與

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

我難倒了一點,所以任何想法將不勝感激分配!

回答

2

for...in是遍歷一個對象的所有枚舉的屬性,如果你想要的值遍歷數組中的,這是referenceTables,你應該使用一個正常的for循環。

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

的問題是,你的for...in循環正在加速從數組對象的其他事情是不是數組項,因此不車型。

如果你想在那裏粘貼console.log(k),你會發現它不僅僅是0...N

+1

或者執行某種類型的this.referenceTables [k] instanceof Backbone.Collection',但我同意遍歷數組更好。 – 2013-05-09 15:22:30

+0

工作很好,謝謝! – 2013-05-09 16:10:10

相關問題