众所周知,AngularJS不支持同步请求。它允许的大部分内容都是承诺,但问题不在于此。我遇到了一个问题,即获得响应的时间可能比人们预期的要长,并且该人可能会重新提交数据。我想阻止它。
是否有任何常见的内置方法可以做到这一点?
答案 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
)