【问题标题】:knockout itself adds disabled="disabled" for <a>淘汰赛本身为 <a> 添加了 disabled="disabled"
【发布时间】:2015-04-29 20:26:22
【问题描述】:

我的绑定:

<!-- ko if: $root.sArea() != null -->
...
    <a href="#" class="btn addRemove" data-bind="click: $root.editQuestion">Edycja</a>
...
<!-- /ko -->

结果是:

<a href="#" class="btn addRemove" data-bind="click: $root.editQuestion" disabled="disabled">Edycja</a>

在第一个绑定标签上没有禁用属性,但在第二个和后续标签上已经有。

为什么淘汰赛增加了禁用属性?

我在解决方案中找到了这段代码

function EnableButtons(enable) {
    if (enable)
        $(".btn, .button").removeAttr("disabled", "disabled");
    else
        $(".btn, .button").attr("disabled", "disabled");
}

被触发两次,参数第一个为 false,第二个为 true,当 knokcout 重新绑定数据时,他以某种方式“记住”禁用属性并将其放入 html 标记。当调用重新绑定时,html 中没有禁用

好的,函数 EnableButtons 在 ajax 调用之前触发,在 jquery 全局事件中

$(document).ajaxStart(function () {
   ...
    EnableButtons(false);
});

在 ajax 完成工作之后:

    $(document).ajaxComplete(function () {
  ...
        EnableButtons(true);
    });

但在成功的 ajax 请求中,我在 observable 中调用重新绑定数据。

结论:

  1. 在ajax调用之前所有按钮都被禁用=""disabled",
  2. 在 ajax 成功时重新绑定并且按钮状态仍处于禁用状态。
  3. 最后,当 ajax 完成时,按钮状态更改为“启用”
  4. 现在当 ja 调用 rebindind data 但我没有调用 ajax 时,我的按钮将状态更改为禁用,为什么?

看起来淘汰赛已经缓存了 html DOM。 如果我在功能 ajax 成功中手动启用按钮,那么一切正常

【问题讨论】:

标签: knockout.js


【解决方案1】:

Knockout 没有添加 disabled 属性,简单明了。其他一些代码正在这样做。看起来您已经确定了一个潜在的候选人,但是如果没有更多的代码,没有人将能够为您提供进一步的帮助。

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 2013-12-27
    • 2018-03-12
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2019-02-17
    相关资源
    最近更新 更多