这个 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/