使用与IE8条件性敲除模板(Using conditional knockout templates

2019-06-23 15:06发布

在所有的“现代”浏览器下面的作品,但不是在IE8:

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

我得到以下错误:

SCRIPT5022:无法解析绑定。 消息:语法错误:预期标识符,字符串或数字; 绑定值:模板:{如果:$ root.itemToEdit.SomeObject()=== $数据,名称: 'EditItemTemplate模板',AfterRender阶段:$ root.initializeEditPanel}

这似乎是列入if模板定义内声明。 如果我改变的标记来以下,IE8是幸福的:

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

为什么包括if在我的模板在IE8无法正常工作说法?

Answer 1:

年长的IE版本可以挑剔使用JavaScript保留字的属性名称。 如果指定了if'if' ,那么你将被罚款。 喜欢:

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

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



文章来源: Using conditional knockout templates with IE8