以下在IE8中失败,但在真实浏览器中有效
<div data-bind="with: currentItem, visible: currentItemState() === 'view'">
<!-- ko if: resource().versions().length -->
<!-- ko with: resource().versions()[0] -->
<div style="margin-top: 15px;" data-bind="visible: error()">
.....
<!-- /ko -->
<!-- /ko -->
基本上我得到property 'error' is null or undefined
这意味着with
(和if
)绑定无法正常工作。这可能是因为IE8正在删除注释,我已经看到它在其他环境中执行,例如在<select>
节点内,但我从未在这样的地方看到过它。
是否有一种解决此问题的好方法(无需通过更改我的html结构来解决问题)?
答案 0 :(得分:1)
大多数时候,当我遇到这个问题时,除了HTML之外,它还没有被淘汰出局。没有正确关闭标签的事情,例如自动关闭<label />
会破坏它。
IE8非常讲究这个东西。由于标签问题,我有一个地方没有呈现<!-- ko if -->
的下半部分
答案 1 :(得分:0)
将第二个无容器绑定包装在空div中,以便在所有浏览器中正确解析
<div data-bind="with: currentItem, visible: currentItemState() === 'view'">
<!-- ko if: resource().versions().length -->
<div>
<!-- ko with: resource().versions()[0] -->
<div style="margin-top: 15px;" data-bind="visible: error()">
<!-- /ko -->
</div>
<!-- /ko -->
</div>
答案 2 :(得分:0)
我不确定是否有正确的解决方法,但事实证明,如果with * ed *值未定义,则敲除with
绑定足够智能,根本不能渲染节点。所以用
<div data-bind="with: resource().versions()[0]">
似乎可以解决问题。