2012-03-29 8 views
0

データバインド<input>タグにしようとしたとき、私はIE8で、次のエラーが表示されます。IE8バインディングエラー

バインディングを解析できませんが。

メッセージ:[オブジェクトエラー];

バインディング値:有効:$ root.hasTag(「foo」で)基本的に

を、私は特定のタグとはモデルが存在しない場合は、チェックボックスを無効にする必要があり、チェックボックスにデータバインドを有効にしています。

<input type="checkbox" data-bind="enable: $root.hasTag('foo')" value="foo" 
    class="filtercheck" /> 

のviewmodelは、すべてのモデルをループに以下の方法があり、一致するタグを持つモデルを合計した値が0より大きければ、次に、trueを返します。

self.hasTag = function(tag) { 
    var sum = 0; 
    var item; 
    for (var i=0; i<this.items().length; i++) { 
     item = this.items()[i]; 
     if (item.tags().indexOf(tag) != -1) { 
      sum++; 
     } else { 
      continue; 
     }   
    } 
    return (sum > 0) ? true : false; 
}; 

なぜこのデータバインドのみIE8でエラーをスローしますか?

答えて

2

indexOfがIE8で定義されていないためです。クイックテストを行い、未定義に戻ります。 supply your own versionにする必要があります。

これが役に立ちます。

+0

あなたが正しいかもしれませんが、私はそれを試してみましょう。私はおそらくknockoutjs [observableArray.indexOf](http://knockoutjs.com/documentation/observableArrays.html#indexof)を使用する必要があります –

+0

これはオプションです。観測不可能な配列に対してもko.utils.arrayIndexOfを使用できます。 – madcapnmckay

関連する問題