templates - 在 IE8 中使用条件 knockout 模板

标签 templates internet-explorer-8 cross-browser knockout.js

在所有“现代”浏览器中,以下作品 但不在 IE8 中:

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

我收到以下错误:

SCRIPT5022: Unable to parse bindings. Message: SyntaxError: Expected identifier, string or number; Bindings value: 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 中不起作用?

最佳答案

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

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

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

关于templates - 在 IE8 中使用条件 knockout 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140236/

相关文章:

c++ - 模板函数中特定于类型的静态声明

c++ - 从有符号到无符号问题的类型转换

jquery - IE8 中 jQuery 生成的复选框的值存储为 "on"而不是实际值?

browser - 有什么好的方法可以仅通过Web浏览器将麦克风音频输入到服务器?

javascript - 如何删除 iframe 的滚动条?

c++ - 使用可变参数模板展开序列范围

c++ - 不合格的 ID 和模板类

html - IE 8 HTML 打印页面问题

javascript - 弹出后禁用所有文本框

javascript - jQuery - 我的代码似乎不适用于所有浏览器