JavaScript

超轻量级php框架startmvc

angular ng-click防止重复提交实例

更新时间:2020-05-18 07:12:01 作者:startmvc
方法一:点击后,让button的状态变为disablejs指令:.directive('clickAndDisable',function(){return{scope:{

方法一:点击后,让button的状态变为disable

js指令:


.directive('clickAndDisable', function() {
 return {
 scope: {
 clickAndDisable: '&'
 },
 link: function(scope, iElement, iAttrs) {
 iElement.bind('click', function() {
 iElement.prop('disabled',true);
 scope.clickAndDisable().finally(function() {
 iElement.prop('disabled',false);
 })
 });
 }
 };
 })

html:


<button type="button" class="btn btn-info btn-bordered waves-effect w-md waves-light" click-and-disable="next()">下一步</button>   //把 ng-click 改为指令click-and-disable

方法二:在app.config里面,重写ng-click事件,设置一定事件内不能重复点击



$provide.decorator('ngClickDirective',['$delegate','$timeout', function ($delegate,$timeout) { //记得在config里注入$provide
 var original = $delegate[0].compile;
 var delay = 500;//设置间隔时间
 $delegate[0].compile = function (element, attrs, transclude) {

 var disabled = false;
 function onClick(evt) {
 if (disabled) {
 evt.preventDefault();
 evt.stopImmediatePropagation();
 } else {
 disabled = true;
 $timeout(function () { disabled = false; }, delay, false);
 }
 }
 // scope.$on('$destroy', function () { iElement.off('click', onClick); });
 element.on('click', onClick);

 return original(element, attrs, transclude);
 };
 return $delegate;
 }]);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

angular ng-click重复提交 angularjs 防重复提交 angular 重复提交