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

Common way to stop repetitive requests in angularjs

本文关键字:常用 方法 请求 angularjs 停止      更新时间:2023-09-26
众所周知,AngularJS不支持同步请求。它允许的大部分内容都是承诺,但问题不在于此。我遇到了一个问题,得到回复的时间可能比人们预期的要长,而且这个人可能会重新提交数据。我想阻止它。

有什么常见的内置方法可以做到这一点吗?

您可以使用绑定到控制器上的属性的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(这样简单的元素