我了解 Angular 的主要原则之一是:
你不应该从你的控制器中引用你的 DOM。
我正在尝试处理信用卡付款,这需要以下步骤:
- 用户填写表单,然后单击提交按钮
- 该表格的一部分被发送到我们的服务器,它开始与支付网关的交易
- 我们服务器的响应会更新表单中的值,然后必须通过表单 POST 将其直接提交到支付网关。
- 其他事情发生。
在这种情况下,我该如何:
- 更新表单中的数据(不从控制器引用表单)
- 获取要提交的表单?
该表单绑定到我的控制器上的模型,所以我尝试了类似以下的方法:
<form action="{{paymentModel.urlFromTheResponse}}">
<input type="hidden" name="accessCode" value="{{paymentModelaccessCodeFromResponse}}" />
<button ng-click="startTransaction(paymentModel)"></button>
</form>
// in my success handler
.success(function(data) {
paymentModel.urlFromTheResponse = data.url;
paymentModel.accessCode = data.accessCode;
$scope.apply();
}
这里的理论是,如果我可以通过数据绑定立即使表单进入正确的状态,那么我可以做一些事情来提交表单。但是,这会引发错误:
已在进行摘要
支持这种类型的流程的 Angular 方式是什么?看来我需要直接与 DOM 交互,这违背了控制器的本质。