此 knockout 的2.1绑定(bind)表达式在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兼容模式以外的任何浏览器一样都能正常工作

有什么建议么?

最佳答案

我认为问题是较旧版本的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

09-20 19:25