一部のアニメーションが原因で、ユーザーがチェックボックスの状態をすばやく切り替えすぎると、視覚的な不具合が発生します。
これを防ぐために、状態を変更できる頻度を制限したいと考えました。これを行うためのきちんとした方法はディレクティブだと思いました。
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
、ディレクティブをできるだけ抽象化したいので、と統合する必要はありません。