IE версии ранее 9 вызывает ошибку " ожидаемый идентификатор, строка или номер"

Это выражение привязки knockout 2.1 отлично работает в Firefox и IE9, но сбой в режиме совместимости IE9 с ошибкой"предполагается наличие идентификатора, строки или числа":

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

Я нашел фактическое место под отладчиком, это эта строка кода (нокаут-2.1.0.отлаживать.в JS):

return new Function("sc", functionBody)

functionBody - строка, равная приведенному выше выражению. Я пытался играть с пробелами и символами возврата каретки-ничего не помогает, те же результаты: он работает так, как ожидалось любой браузер, кроме режима совместимости IE9

какие предложения?

1 ответов


Я думаю, проблема в том, что более старые версии IE не любят "Если" или подобные зарезервированные слова появляться в качестве имен свойств. Попробуйте поставить одинарные кавычки вокруг имен свойств.

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

еще одно общее время, когда это произойдет, когда у вас есть привязка" class". То же самое исправить:

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

список зарезервированных слов в JS:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words