在我的 Angular 1.x 应用程序中,我通过对后端的 api 调用获得了优惠列表。
对于回复中返回的每个报价,我正在创建一个 ng-form。然后我以模式显示表单,我希望能够在单击每个表单的提交按钮时禁用它,以避免在表单数据发布到后端时多次单击。
这似乎很棘手,因为优惠的数量是未知的,因此我不确定如何为每个优惠初始化一个变量以禁用按钮。
如果我只有一个表格,任务会更加直接,我设置了:
$scope.disableButton = true
...然后在按钮上使用 ng-disabled
到目前为止,我正在按如下方式显示我的表格:
<div ng-form ng-repeat="i in offers track by $index" name="messageForm[$index]" class="row ng-cloak">
....
<button type="button" ng-click="offerRespond(messageForm[$index])" ng-disabled="!messageForm[$index].$valid || offer.i.disableButtons">Submit</button>
</div>
然后在我的控制器的 offerRespond 函数中:
offer = this;
offer.i.disableButtons = true;
这当然行不通,但它已经尽可能接近了。
hack 是在将 Offers 对象传递给前端之前对其进行解析,但这似乎是一个可怕的 hack。