13

在所有“现代”浏览器中,以下有效但在 IE8 中无效:

<!-- ko template: {if: $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } -->
<!-- /ko -->

我收到以下错误:

SCRIPT5022:无法解析绑定。消息:语法错误:预期的标识符、字符串或数字;绑定值:模板:{if: $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel }

似乎是if在模板定义中包含了该语句。如果我将标记更改为以下内容,IE8 很高兴:

<!-- ko if: $root.itemToEdit.SomeObject() === $data -->
   <!-- ko template: {name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } -->
   <!-- /ko -->
<!-- /ko -->

为什么if在我的模板中包含语句在 IE8 中不起作用?

4

1 回答 1

33

较旧的 IE 版本对于使用 JavaScript 保留字作为属性名称可能会很挑剔。如果你指定iflike 'if',那么你会没事的。像:

<!-- ko template: {'if': $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } -->
<!-- /ko -->

或者类似的东西<label data-bind="attr : { 'for': id }"></label>

于 2012-04-13T12:52:49.520 回答