POST
HTML フォームからデフォルトのアクション URLにデータを送信したいのですが、非表示の入力の 1 つがサービス呼び出しから返されたデータに依存しています。私が使用するとng-submit
、$scope
サービスコールが完了する前に更新されませんPOST
。POST
の後に HTML ページが表示されるため、Ajax を使用できませんPOST
。
フォームは次のようになります。
<form name="payment" role="form" class="form-inline" ng-show="!loading" method="POST" action="{{paymentUrl}}" ng-submit="createOrder()" novalidate>
<input type="hidden" id="responseUrl" name="responseUrl" value="{{postPaymentUrl}}"/>
<input type="hidden" id="orderNumber" name="orderNumber" value="{{orderNumber}}"/>
<select class="form-control" id="paymentMethodBrand" name="paymentMethodBrand">
<option ng-repeat="paymentMethod in paymentMethods | orderBy:'method'" value="{{paymentMethod.method}}">{{paymentMethod.method}}</option>
</select>
<button type="submit" class="btn btn-default" translate="BUY"></button>
</form>
フィールドの URLaction
が正しく入力されます。
コントローラーのcreateOrder
機能は次のとおりです。
$scope.createOrder = function () {
Payment.start($scope.selectedProduct)
.then(function (response) {
$scope.orderNumber = response.data.orderNumber;
});
};
問題は、実際のアクション URL を開く前に、非表示の入力 orderNumber が入力されないことです。したがって、投稿されるデータは正しくありません。
これにアプローチする方法について何か考えはありますか?angularjs 1.2.16 を使用しています。