由于某些动画,如果用户过快地切换复选框的状态,就会出现视觉故障。
为了防止这种情况发生,我想限制状态可以改变的频率。我认为这样做的一个简洁方法是指令。
我已成功制定了一项指令,可防止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
集成,因为我希望尽可能保持指令的抽象。
答案 0 :(得分:2)
ng-model
指令在预连接阶段绑定事件。因为stopPropagation不起作用。
处理预链接中的逻辑而不是后链接。
这是更新的plunker。 http://plnkr.co/edit/lrZYpeElxbc2TRJl3eff?p=preview