在所有“现代”浏览器中,以下工作,但不适用于IE8:
<!-- ko template: {if: $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } -->
<!-- /ko -->
我收到以下错误:
SCRIPT5022:无法解析绑定。消息:SyntaxError:预期 标识符,字符串或数字;绑定值:template:{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中不起作用?
答案 0 :(得分:33)
较早的IE版本可以挑剔使用JavaScript保留字来表示属性名称。如果您指定if
'if'
,那么您会没事的。像:
<!-- ko template: {'if': $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } -->
<!-- /ko -->
或类似<label data-bind="attr : { 'for': id }"></label>