我有以下 KnockoutJS 2.0 代码,在所有现代浏览器中都可以正常工作,但在 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、Chrome、Firefox 上运行良好。
但是,在 IE8 上,我收到以下错误:
“无法解析绑定。SomeMethod 未定义。”
在 IE8 中调试它,我看到以下信息:
它即将抛出异常,并且在 foo 模板的渲染过程中到来。
注意 $data 是未定义的。这就是 SomeMethod 无法解决的原因;它应该存在于 $data.SomeMethod 上,但 $data 未定义。
为什么这在 IE8 上失败了?