1

在我的 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。

4

1 回答 1

1

实际上我几乎在我的实现中得到了答案,我只是正确地引用了我的变量:

ng-disabled="!messageForm[$index].$valid || offer.i.disableButtons"

本来应该

ng-disabled="!messageForm[$index].$valid || i.disableButtons"

感谢@igor 给了我一个测试的想法,这使我能够自己揭示答案。

于 2019-02-20T20:58:01.043 回答