IE8 的淘汰赛 - 失去点击绑定

Knockout with IE8- losing click binding

本文关键字:绑定 失去 淘汰赛 IE8      更新时间:2023-09-26

使用 Knockout v2.3.0:

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

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

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

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

它适用于所有浏览器,除了IE8(也许IE7也是如此(。

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

我最初试图让每个按钮使用相同的函数并传递不同的字符串:"向下"与"向上"。 但出于某种原因,我认为IE无法处理这个问题。

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

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

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

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

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

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

--斯科特

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

将数据绑定更改为此 -

data-bind="with: $data.modelName"
如果模型名称为空,则不显示

任何内容,如果不是,则不显示模型名称。

接下来,预标记以查看它何时或为什么消失 -

<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>