0

使用淘汰赛 v2.3.0:

我有一个部分使用“with:modelName”绑定到模型。

在该部分中,我构建了一个数字增量器:

  1. 带有减号的灰色按钮
  2. 显示值的输入字段,
  3. 带有加号的灰色按钮

基本上,正如您所料,单击减号会减少计数器,而单击加号会增加计数器。

它在所有浏览器中都能完美运行,除了 IE8(也可能是 IE7)。

在 IE8 中,它可以在清除缓存的情况下正常工作。但是,如果您刷新页面,则第一个按钮将不再起作用。基本上,在后续页面加载时该字段上根本没有点击绑定。

我最初试图让每个按钮使用相同的功能并传递不同的字符串:“down”与“up”。但由于某种原因,我认为 IE 无法处理这个问题。

所以,现在,我构建了单独的函数:decrementChildCount() 和 incrementChildCount()。

但同样的事情也会发生。IE8 可以从清除的缓存中加载页面。但随后的页面加载使其失去点击绑定 - 仅适用于第一个按钮。

当我在原始标记的上方添加一个更简洁的标记版本时,我发现了另一件事(所以我有两组按钮-字段-按钮组)。

现在,第一个按钮失去了它的点击绑定,但所有其他按钮都可以正常工作 - 甚至是原来的减号按钮,因为它不再是该部分中的第一个按钮。该减号按钮现在可以在后续页面加载中正常工作。

这是怎么回事?为什么第一个点击绑定按钮会在后续页面加载时失去点击绑定?

为了解决这个问题,我真的不想有一个隐藏的虚拟点击绑定按钮,只是为了让“真正的”第一个按钮工作......

——斯科特

4

1 回答 1

0

尝试这样做以在短期内找到您的问题,并提出解决方案来长期纠正它 -

将您的数据绑定更改为此 -

data-bind="with: $data.modelName"

如果 modelName 为 null,则不显示任何内容,如果不是,则 modelName 不显示。

接下来,pretag 看看它何时或为什么会消失 -

<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
于 2013-10-10T16:04:41.087 回答