什么是禁用按钮的最佳方法,以使Knockout.js不会发生双击。我有一些用户在进行快速单击,从而导致多个ajax请求。我认为 knockout (Knockout.js)可以通过多种方式处理此问题,并希望了解其中的一些替代方法。

最佳答案

使用信号量(旋转锁)。基本上,您可以计算元素已注册的点击次数,如果该点击次数超过1,则返回false,并且不允许以下点击。可以使用超时功能清除锁定,以便他们可以在5秒后再次单击。您可以从http://knockoutjs.com/documentation/click-binding.html修改示例

如此处所示:

<div>
 You've clicked <span data-bind="text: numberOfClicks"></span> times
 <button data-bind="click: incrementClickCounter">Click me</button>
</div>

<script type="text/javascript">
 var viewModel = {
     numberOfClicks : ko.observable(0),
     incrementClickCounter : function() {
         var previousCount = this.numberOfClicks();
         this.numberOfClicks(previousCount + 1);
     }
 };
</script>

通过将嵌套函数内部的逻辑更改为
if( this.numberOfClicks() > 1 ){
 //TODO: Handle multiple clicks or simply return false
 // and perhaps implement a timeout which clears the lockout
}

07-28 11:02