Knockout JS: проблема с ‘data-bind’ в старых версиях Internet Explorer.

Knockout JS

Проблема с Knockout JS в старых версиях Internet Explorer, а именно тех, что ниже IE 9, заключается в том, что они не могут правильно обработать атрибут data-bind. Синтаксическая ошибка не дает покоя, и без продолжительного DEBUGa, как обычно не обошлось.

Напомним, что это за атрибут:

<a data-bind="attr: { href: url, title: details }">
    Report
</a>

Таким образом у тега a появятся такие стандартные атрибуты как href и title с соответствующими значениями.

(Не буду объяснять подробности того как этим пользоваться, так как это заслуживает отдельной статьи. Кто знаком – тот поймет, а кто нет – ознакомьтесь, очень полезная библиотека.)

Так вот. При попытке обработать данную конструкцию в Internet Explorer 7, 8 возникает синтаксическая ошибка. После танцев с бубном я определил, что если взять все названия полей в кавычки, то все отлично работает.

Как это будет выглядеть:

<a data-bind="'attr': { 'href': url, 'title': details }">
    Report
</a>

По всей видимости, IE пытается обработать эти поля как переменные, которых естественно не находит. А в таком виде поля выступают в виде строк.

Та-да!