0

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

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

我已经成功地制定了一个指令,防止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 )

还有一个证明我的问题的笨蛋。

概括

ngModel当它指定的复选框被点击时,即使默认值被阻止,导致复选框永远不会被选中,它也会被更新。我怎样才能避免这种情况?

理想情况下,我不想与 集成,ngModelController因为我想让指令尽可能抽象。

4

1 回答 1

2

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

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

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

于 2015-03-03T13:52:50.597 回答