6

这个淘汰赛 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 兼容模式以外的任何浏览器中正常工作

有什么建议么?

4

1 回答 1

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

于 2012-10-26T16:25:49.523 回答