8

私のユースケース:

以下のplunkrのように、ui-routerを使用したマルチステップフォームがあります。$valid、$dirty など、AngularJS によって提供される情報を検証するために ng-form を使用します。

「次のセクション」ボタンをクリックするたびに、ユーザーが終了する前にフォームを終了した場合に備えて、フォームデータをサーバーに送信して取得します。

ユーザーが最初のステップを 2 回送信した場合、編集したデータのみを送信します ($dirty 値が true の場合)。これらはすべて plunkr にはありません。単純なフォームを表示することにしましたが、フォームには 100 のフィールド (ラジオ、チェックボックス、入力、選択など) を含めることができます。

問題を再現する手順 (plunkr):

  1. ステップ 1 を入力して次のセクションに進む
  2. xbox ラジオを確認し、番号をクリックして手順 1 に戻ります。 myMultiStepForm.interests.xbox.$dirty = true
  3. ステップ 2 に戻る myMultiStepForm.interests.xbox.$dirty = false

$dirty の値が false に変更されるのはなぜですか? <ng-form>が再度表示され、すべての検証データがリセットされたためだと思います。

これを回避する方法はありますか?<ng-form>それとも、フィールドのサブセットの検証を処理する以外の何かでしょうか?

これは plunkr です: http://plnkr.co/edit/WclqVgiBvUXlsGdSCcj0?p=preview

4

2 に答える 2