【发布时间】:2013-01-21 22:29:53
【问题描述】:
我了解 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 交互,这违背了控制器的本质。
【问题讨论】:
-
谁在提交表单——你(通过 JavaScript),还是用户看到更新后的数据?
-
为了学习,比方说我,通过 Javascript。
标签: angularjs