使用Knockout v2.3.0:
我有一个部分,我使用“with:modelName”绑定到模型。
在该部分中,我构建了一个数字增量器:
基本上,正如您所期望的那样,单击减号递减计数器,同时单击加号,递增它。
除IE8(也可能是IE7)外,它在所有浏览器中都能完美运行。
在IE8中,它可以正常使用清除缓存。但是,如果刷新页面,则第一个按钮不再起作用。基本上,在后续页面加载时,该字段上根本没有点击绑定。
我最初试图让每个按钮使用相同的功能并传递不同的字符串:“down”vs“up”。但出于某种原因,我认为IE无法解决这个问题。
所以,现在,我已经构建了单独的函数:decrementChildCount()和incrementChildCount()。
但同样的事情发生了。 IE8可以从清除的缓存中加载页面。但是后续的页面加载会使它失去点击绑定 - 仅限于第一个按钮。
当我在原始版本上方添加一个更清晰版本的标记时,我发现了另一件事(所以我有两组按钮字段按钮组)。
现在,第一个按钮失去了它的点击装订,但其他所有按钮都工作正常 - 甚至是原始减号按钮,因为它不再是该部分中的第一个按钮。这个减号按钮现在可以在后续页面加载时正常工作。
这是怎么回事?为什么第一个点击装订按钮会在后续页面加载时丢失它的点击装订?
要解决这个问题,我真的不希望有一个隐藏的虚拟点击按钮,只是为了让“真正的”第一个按钮起作用....
- 斯科特
答案 0 :(得分:0)
尝试这样做,以便在短期内找到您的问题并提出解决方案以长期纠正它 -
将数据绑定更改为此 -
data-bind="with: $data.modelName"
如果modelName为null,则不显示任何内容;如果不是,则显示modelName。
接下来,预标签看看它何时或为何会消失 -
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>