Angular の重要な原則の 1 つは次のとおりであることを理解しています。
あなたのコントローラー内からあなたの 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 と直接対話する必要があるようです。