此视图适用于IE9和Chrome。但是,不适用于IE8。 呈现页面时,它的外观如下:
我的HTML(MVC3 View)如下所示。
<div id="machinedisplay" data-bind="with: selectedMachine" >
<h2><span data-bind="text: MachineDesciption" /></h2>
<!-- ko with: my.vm.machineData -->
<table>
<thead><tr>
<th>Point Name</th><th>Description</th><th>Points Data</th>
</tr></thead>
<tbody data-bind="foreach: Points">
<tr>
<td data-bind="text: PointName()"></td>
<td data-bind="text: PointDesciption()"></td>
<td>
<table style="width:100%;">
<thead><tr>
<th>Name</th><th>Description</th><th>Value</th><th></th>
</tr></thead>
<tbody data-bind="foreach: Params">
<tr>
<td data-bind="text: ParameterName"></td>
<td data-bind="text: ParameterDescription"></td>
<td data-bind="text: StringValue"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- /ko -->
</div>
关于IE8的任何想法都可以解决?
修改 要在更简单的模型上说明此问题,请查看此小提琴http://jsfiddle.net/ericpanorel/nzKvb/
我认为我遇到了问题,因为我正在使用“with”或“if”绑定。我在某处读到这会导致IE8出现问题。
我使用的是IE9,如果你使用你的开发者工具从IE9切换到IE8,这个小提琴再也不能正常工作了。这个小提琴实际上来自一个淘汰样本(http://knockoutjs.com/examples/gridEditor.html)
修改 我更新了小提琴... http://jsfiddle.net/nzKvb/20/ 它与嵌套的无容器绑定中的标签的短手关闭有关
<!-- ko if: Allowed-->
<h2>
<span data-bind="text: Dummy"/> <===== This will bomb in IE8
</h2>
答案 0 :(得分:6)
jsFiddle在数组末尾有一个额外的逗号,IE8将其视为空对象:
var viewModel = new GiftModel([
{ name: "Tall Hat", price: "39.95"},
{ name: "Long Cloak", price: "120.00"},
{ name: "HK 416", price: "2420.00"}, <-- HERE !!!
]);
ko.applyBindings(viewModel);
小提琴在没有逗号的情况下工作正常:
不确定这是否能解决您的根本问题,但至少小提琴现在正在运作: - )
答案 1 :(得分:3)
问题出在这里是因为
<!-- ko if: Allowed-->
较早的IE版本可以使用JavaScript保留字来挑剔 对于财产名称。
所以你应该写'if'