Я использую Knockoutjs 2.0. Я пытался заставить эту таблицу работать в IE8 (она отлично работает в FF, Chrome и IE9):
<table data-bind="foreach: Applications">
<tr>
<td><input type="text" data-bind="value: Name"/></td>
</tr>
</table>
В IE8 я получаю сообщение об ошибке: Ошибка: «неопределенный» имеет значение null или не является URL-адресом объекта: http://127.0.0.1:81/Scripts/jquery-1.5.1.min.js
Я фактически исправил проблему, сделав таблицу телом с шаблоном и заставив шаблон содержать строку таблицы. Но это не так чисто, и мне интересно, есть ли лучшее решение.
Ниже показано, как я настраиваю модель представления:
self.Applications = ko.observableArray([]);
$.each(model.Applications, function (i, applicationItem) {
var application = new Application(applicationItem.ApplicationID, applicationItem.Name);
self.Applications.push(application);
});
function Application(applicationID, name) {
var self = this;
self.ApplicationID = applicationID
self.Name = ko.observable(name);
};
EDIT: найдено решение Вместо этого используется поток управления без контейнера
<table>
<tbody>
<!-- ko foreach: Applications -->
<tr>
<td><input type="text" data-bind="value: Name"/></td>
</tr>
<!-- /ko -->
</tbody>
</table>
tbody
в DOM, потому что это необязательный элемент, но предполагается, что он будет там, если вы просто используетеtr
внутри своей таблицы, см. здесь: w3.org/TR/html5/syntax.html#Optional-tags - person Paul Tyng   schedule 03.02.2012