javascript - 早于 9 的 IE 版本引发错误 "Expected identifier, string or number”

标签 javascript knockout.js

这个 knockout 2.1 绑定(bind)表达式在 Firefox 和 IE9 下工作正常,但在 IE9 兼容模式下崩溃并出现错误“Expected identifier, string or number”:

<div data-bind="template: {
    if: myDataModel, 
    data: myDataModel, 
    afterRender: setup(myDataModel) }">

我在调试器下找到了实际位置,就是这行代码 (knockout-2.1.0.debug.js):

return new Function("sc", functionBody)

functionBody 是一个等于上述表达式的字符串。我尝试使用空格和回车符 - 没有任何帮助,结果相同:它可以在 IE9 兼容模式以外的任何浏览器上正常工作

有什么建议吗?

最佳答案

我认为问题在于旧版本的 IE 不喜欢“if”或类似的保留字作为属性名称出现。尝试在属性名称两边加上单引号。

<div data-bind="template: {
'if': myDataModel, 
data: myDataModel, 
afterRender: setup(myDataModel) }">

另一个常见的情况是当您有一个“类”绑定(bind)时会发生这种情况。相同的修复:

<tr data-bind="attr: { 'class': packageSelected() ? 'success' : '' }">

JS保留字列表:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words

关于javascript - 早于 9 的 IE 版本引发错误 "Expected identifier, string or number”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090719/

相关文章:

javascript - 在 Node.js 中读取环境变量

javascript - 服务器端请求和 XmlHTTPRequest(客户端)和安全性

jquery - Knockout订阅dom更新后触发

javascript - Knockout.js 返回未定义

knockout.js - 剑道击倒 : Binding "selected" viewmodel property with grid

javascript - 将 JS 对象数组存储在 cookie 中,无需插件?

javascript - AMP 下拉错误 : 'onchange' may not appear in tag 'select'

javascript - 将复杂的 json 对象绑定(bind)到 knockout 下拉菜单

javascript - 删除函数中的数据绑定(bind)

javascript - 如何在 jQuery 中使用循环自动绑定(bind)多个事件处理程序