在angularjs中停止重复请求的常用方法

时间:2014-04-24 12:20:57

标签: javascript angularjs submit

众所周知,AngularJS不支持同步请求。它允许的大部分内容都是承诺,但问题不在于此。我遇到了一个问题,即获得响应的时间可能比人们预期的要长,并且该人可能会重新提交数据。我想阻止它。

是否有任何常见的内置方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用绑定到控制器上的ng-disabled绑定到xhr之前设置为true的控制器,并在xhr完成之后设置false。单击事件,因此在禁用按钮时{}不会提交ng-click

文档:https://docs.angularjs.org/api/ng/directive/ngDisabled

<强>更新 如果您想将ng-disabled任何元素(例如a)一起使用,则可以使用自定义点击处理程序,例如:

yourApp.directives.directive('myClick', ['$parse',function ($parse): ng.IDirective {
    return {
        restrict: 'A',        
        link: (scope, element:JQuery, attrs) => {
            var fn = $parse(attrs.picClick);
            element.on('click', function (event) {

                // The core disabled logic detection
                if (attrs.disabled) return;

                scope.$apply(function () {
                    fn(scope, { $event: event });
                });
            });
        }
    }
}]);

当然,在属性disabled设置为true时,您应该对元素设置不同的样式。

另一种方式 或者,您可以使用一对多属性元素,一次只显示一个使用像(ng-show

这样简单的元素