最近のすべてのブラウザで正常に動作するが、IE8では失敗するKnockoutJS 2.0のコードがあります。KnockoutJSテンプレートがIE8で動作しない、バインディングエラーが発生する
ここでは単純化されたコードです:
<table>
<tr>
<td data-bind="template: { foreach: fooItems, name: 'foo-template' }></td>
<td data-bind="template: { foreach: barItems, name: 'foo-template' }></td>
</tr>
</table>
<script id="foo-template" type="text/html">
<div data-bind="click: SomeMethod">
foobar
</div>
</script>
<script type="text/javascript">
var viewModel = {
fooItems: ko.observableArray(),
barItems: ko.observableArray(),
}
ko.applyBindings(viewModel);
</script>
これはIE9、クロム、Firefoxの上で正常に動作します。
しかし、IE8で、私は次のエラーを取得する:それは例外をスローしようとしてい
、および:
IE8でこれをデバッグ"Unable to parse bindings. SomeMethod is undefined."
、私は以下の情報を参照してくださいそれはfoo-templateのレンダリング中に起こります。
$ dataは未定義であることに注意してください。 SomeMethodが解決しないのはそのためです。 $ data.SomeMethodに存在するはずですが、$ dataは未定義です。
IE8でこれが失敗するのはなぜですか?
JsFiddleは、以下のようにも私のために働きました。多分、単純化されたバージョンには何かが欠けていますか –