1

フォームを送信したいのですが、最初にいくつかの非表示の入力を追加します。非表示の入力は ng-repeat で追加されます。最終的にはレンダリングされますが、submit イベントをトリガーする前に DOM が既に更新されていることを確認するにはどうすればよいでしょうか?

部分的:

<form ng-submit="addValuesAndSubmit()">
  <input type="hidden" name="{{name}}" value="{{value}}" ng-repeat="(name, value) in order">
  <input type="submit">
</form>

コントローラ:

$scope.addValuesAndSubmit = function() {
  $scope.order = { param1: 1, param2: 2 };
  // TODO: wait until form is rendered
  // there should be two <input type="hidden"> now
  // trigger submit action
};

私が理解しているように、これにはディレクティブのポストリンク関数を使用できます。私は正しいですか、それとも明らかな何かが欠けていますか?

編集: フォーム データを外部 Web サイトに投稿し、ブラウザーを応答にリダイレクトする必要があります。これは、サーバー上で HMAC を計算し、非表示の要素としてフォームに追加してから、支払いプロバイダーに投稿する支払い統合です。$http.post() の実装はそのリダイレクトを行わないようですが、代わりに応答を返します。

4

1 に答える 1

0

Angular アプリでは、フォーム要素からデータを抽出するのではなく、モデルを送信したいことがよくあります。つまり、ng-model を使用して $scope モデル オブジェクトのプロパティを指定し、そのモデル オブジェクトを ng-submit 経由で送信します。order関連付けられたビューを使用するようにしようとしているので、 $scope に既にアクセスしているように思えます。そのため、おそらくビューが更新されるのを待つ必要はありませんorder。 addValuesAndSubmit() 関数で直接使用するだけです。

于 2013-01-28T22:49:56.157 に答える