淘汰IE8-失去点击绑定

时间:2013-10-10 15:47:10

标签: javascript jquery knockout.js internet-explorer-8

使用Knockout v2.3.0:

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

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

  1. 带有减号的灰色按钮
  2. 显示值的输入字段
  3. 带有加号的灰色按钮
  4. 基本上,正如您所期望的那样,单击减号递减计数器,同时单击加号,递增它。

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

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

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

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

    但同样的事情发生了。 IE8可以从清除的缓存中加载页面。但是后续的页面加载会使它失去点击绑定 - 仅限于第一个按钮。

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

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

    这是怎么回事?为什么第一个点击装订按钮会在后续页面加载时丢失它的点击装订?

    要解决这个问题,我真的不希望有一个隐藏的虚拟点击按钮,只是为了让“真正的”第一个按钮起作用....

    - 斯科特

1 个答案:

答案 0 :(得分:0)

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

将数据绑定更改为此 -

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

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

接下来,预标签看看它何时或为何会消失 -

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