your fix works fine, if you want a less verbose option, you can just put the data binding on the "tbody" node:
<table> <tbody data-bind="foreach: Applications"> <tr> <td><input type="text" data-bind="value: Name"/></td> </tr> </tbody> </table>
The problem is that ie8 automatically adds "tbody" to the DOM (even if it is not in the markup). therefore, if the data binding attribute is in the “table” node, when the knockout performs foreach, new children are added to the “table” and not to “tbody”, getting something like:
<table data-bind="foreach: Applications"> <tr> <td><input type="text" value="John"/></td> </tr> <tbody> </tbody> </table>
And IE is not happy with that. that’s why, as you probably found, using only “no containers” notation is not enough, and you need a “tbody” node. Please note that in other browsers there is no problem with this. This is one of the "need to know" tricks when using knockoutjs.
Hope this helps get things going on.
source share