早于9的IE版本引发错误“预期的标识符,字符串或数字”

时间:2012-10-26 16:21:58

标签: javascript knockout.js

此淘汰2.1绑定表达式在Firefox和IE9下运行正常,但在IE9兼容模式下崩溃,错误为“预期标识符,字符串或数字”:

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

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

return new Function("sc", functionBody)

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

有什么建议吗?

1 个答案:

答案 0 :(得分:12)

我认为问题在于IE的旧版本不喜欢“if”或类似的保留字来显示为属性名称。尝试在属性名称周围加上单引号。

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

当你有一个“类”绑定时,你会遇到这种情况的另一个常见时间。同样的修复:

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

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