防止复选框上的默认设置不会阻止ng模型的更改

时间:2015-03-03 13:29:14

标签: angularjs checkbox angularjs-ng-model

由于某些动画,如果用户过快地切换复选框的状态,就会出现视觉故障。

为了防止这种情况发生,我想限制状态可以改变的频率。我认为这样做的一个简洁方法是指令。

我已成功制定了一项指令,可防止ng-click以超过一定的频率触发,但在复选框方面存在特定问题。

这里是指令代码(coffeescript):

angular.directive 'pxnMaxClickFreq', ($timeout)->

  restrict: 'A'

  # Make sure our event binding runs before any other directive
  priority: -100

  link: (scope, element, attributes)->
    timer = false
    element.on 'click', (e)->
      if timer
        e.preventDefault()
        e.stopImmediatePropagation()
      else
        timer = true
        $timeout( (-> timer = false), attributes.pxnMaxClickFreq )

一个plunker来证明我的问题。

摘要

ngModel在点击指定的复选框时会被更新,即使默认设置被阻止,也会导致永远不会选中复选框。我怎么能避免这个?

理想情况下,我不想与ngModelController集成,因为我希望尽可能保持指令的抽象。

1 个答案:

答案 0 :(得分:2)

ng-model指令在预连接阶段绑定事件。因为stopPropagation不起作用。

处理预链接中的逻辑而不是后链接。

这是更新的plunker。 http://plnkr.co/edit/lrZYpeElxbc2TRJl3eff?p=preview