2

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 ブラウザ モードの 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配列内の値を反復処理する場合は、 objectのすべての列挙可能なプロパティを反復処理します。つまりreferenceTables、通常のforループを使用する必要があります。

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

問題は、for...inループが配列オブジェクトから配列項目ではない他のものを取得しているため、モデルではないことです。

そこにaconsole.log(k)を入れると、ただの ではないことがわかります0...N

于 2013-05-09T15:19:09.757 に答える