Internet explorer 8 KnockoutJS模板没有';无法在IE8中工作,导致绑定错误

Internet explorer 8 KnockoutJS模板没有';无法在IE8中工作,导致绑定错误,internet-explorer-8,knockout.js,Internet Explorer 8,Knockout.js,我有以下KnockoutJS2.0代码,在所有现代浏览器中都可以正常工作,但在IE8上失败 以下是简化代码: <table> <tr> <td data-bind="template: { foreach: fooItems, name: 'foo-template' }></td> <td data-bind="template: { foreach: barItems, name: 'foo-templa

我有以下KnockoutJS2.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>

福巴
var viewModel={
footItems:ko.observableArray(),
重离子:ko.observearray(),
}
应用绑定(视图模型);
这在IE9、Chrome和Firefox上运行良好

但是,在IE8上,我得到以下错误:

“无法分析绑定。SomeMethod未定义。”

在IE8中调试时,我看到以下信息:

它将抛出异常,它将在呈现foo模板的过程中出现

注意,$data是未定义的。这就是为什么SomeMethod没有解析;它应该存在于$data.SomeMethod上,但$data未定义


为什么在IE8上会失败

我用IE8在JSFIDLE中试用了你的示例,没问题


我用IE8在JSFIDLE中试用了你的示例,没问题


我也有同样的问题,看到你不知道如何解决问题,我非常失望

因此,对于未来的游客,我是如何解决这个问题的:

我用一个硬编码数组初始化了foreach中使用的数组,最后是一个尾随的coma

在您的示例中,看起来是这样的:

viewModel.fooItems([
    {SomeMethod: function () {}},
    {SomeMethod: function () {}},   // <- here is the evil coma
]);
viewModel.footItems([
{SomeMethod:function(){},

{SomeMethod:function(){},//我也遇到了同样的问题,看到您在不知道如何解决问题的情况下解决了问题,我感到非常失望

因此,对于未来的游客,我是如何解决这个问题的:

我用一个硬编码数组初始化了foreach中使用的数组,最后是一个尾随的coma

在您的示例中,看起来是这样的:

viewModel.fooItems([
    {SomeMethod: function () {}},
    {SomeMethod: function () {}},   // <- here is the evil coma
]);
viewModel.footItems([
{SomeMethod:function(){},

{SomeMethod:function(){},//下面的JSFIDLE对我也很有用。也许简化版缺少了什么?下面的JSFIDLE对我也很有用。也许简化版缺少了什么?嗯。好的。所以简化版缺少了什么。好的。我会尝试删除一些片段,直到我能找出问题。谢谢。我移动了一些代码d神奇地开始工作。我怀疑我在KnockoutJS中偶然发现了一个非常小的bug,但不知道到底是什么修复了它,很难说。谢谢你的回答,这让我对代码进行了修改,最终解决了问题。标记为answer。嗯。好的。所以简化版缺少了一些东西。好的。我试试看删除一些片段,直到我可以隔离问题。谢谢。我移动了一些代码,然后神奇地开始工作。我怀疑我在KnockoutJS中偶然发现了一个非常小的bug,但不知道到底是什么修复了它,很难说。谢谢你的回答,这让我对代码进行了修改,最终解决了问题谢谢你在这个问题上的帮助,托马斯。我把你的作为答案。谢谢你在这个问题上的帮助,托马斯。我把你的作为答案。