我有以下KnockoutJS 2.0代码,在所有现代浏览器中都能正常工作,但在IE8上失败。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,Chrome浏览器,Firefox浏览器。
但是,IE8,我得到以下错误:
"Unable to parse bindings. SomeMethod is undefined."
在IE8调试这一点,我看到以下信息:
这是关于抛出异常,和它在foo-template的渲染过程中即将到来。
注意$ data是未定义的。这就是为什么SomeMethod不能解决问题;它应该存在于$ data.SomeMethod上,但是$ data没有定义。
为什么在IE8上失败?
在下面的jsfiddle工作对我来说也是如此。也许简化版本缺少一些东西? – 2012-04-19 13:38:02