【发布时间】:2013-05-15 01:40:47
【问题描述】:
我有以下 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-template 的过程中来了。
请注意 $data 未定义。 这就是 SomeMethod 无法解析的原因;它应该存在于 $data.SomeMethod,但 $data 未定义。
为什么在 IE8 上会失败?
【问题讨论】:
-
下面的 JsFiddle 也对我有用。也许简化版缺少什么?
标签: internet-explorer-8 knockout.js