我使用knockoutjs 2.0 我一直想在IE8這個表工作淘汰賽IE8的問題(它工作正常,在FF,Chrome和IE9):用foreach數據綁定和輸入值數據綁定
<table data-bind="foreach: Applications">
<tr>
<td><input type="text" data-bind="value: Name"/></td>
</tr>
</table>
在IE8我得到的錯誤: 錯誤:「未定義」爲空或不是對象 網址:http://127.0.0.1:81/Scripts/jquery-1.5.1.min.js
我其實是通過使表TBODY與模板,使模板解決了該問題包含錶行。但這不是那麼幹淨,我想知道是否有更好的解決方案。
下面是我如何設置視圖模型:
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);
};
編輯:找到一個解決方案 使用無容器控制流,而不是
<table>
<tbody>
<!-- ko foreach: Applications -->
<tr>
<td><input type="text" data-bind="value: Name"/></td>
</tr>
<!-- /ko -->
</tbody>
</table>
我認爲問題在於瀏覽器強制'tbody'進入DOM,因爲它有一個可選的元素,但假設你只是在你的表裏面使用'tr',就會在那裏,見這裏:http://www.w3。 org/TR/html5/syntax.html#optional-tags – 2012-02-02 23:34:06