淘汰2.0在IE8中不起作用

时间:2012-03-08 00:41:46

标签: internet-explorer-8 knockout.js

此视图适用于IE9和Chrome。但是,不适用于IE8。 呈现页面时,它的外观如下:

enter image description here

我的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>

2 个答案:

答案 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);

小提琴在没有逗号的情况下工作正常:

http://jsfiddle.net/XPMUA/

不确定这是否能解决您的根本问题,但至少小提琴现在正在运作: - )

答案 1 :(得分:3)

问题出在这里是因为

<!-- ko if: Allowed-->
  

较早的IE版本可以使用JavaScript保留字来挑剔   对于财产名称。

所以你应该写'if'

检查Same problem in another link