私のユースケース:
以下のplunkrのように、ui-routerを使用したマルチステップフォームがあります。$valid、$dirty など、AngularJS によって提供される情報を検証するために ng-form を使用します。
「次のセクション」ボタンをクリックするたびに、ユーザーが終了する前にフォームを終了した場合に備えて、フォームデータをサーバーに送信して取得します。
ユーザーが最初のステップを 2 回送信した場合、編集したデータのみを送信します ($dirty 値が true の場合)。これらはすべて plunkr にはありません。単純なフォームを表示することにしましたが、フォームには 100 のフィールド (ラジオ、チェックボックス、入力、選択など) を含めることができます。
問題を再現する手順 (plunkr):
- ステップ 1 を入力して次のセクションに進む
- xbox ラジオを確認し、番号をクリックして手順 1 に戻ります。
myMultiStepForm.interests.xbox.$dirty = true
- ステップ 2 に戻る
myMultiStepForm.interests.xbox.$dirty = false
$dirty の値が false に変更されるのはなぜですか? <ng-form>
が再度表示され、すべての検証データがリセットされたためだと思います。
これを回避する方法はありますか?<ng-form>
それとも、フィールドのサブセットの検証を処理する以外の何かでしょうか?
これは plunkr です: http://plnkr.co/edit/WclqVgiBvUXlsGdSCcj0?p=preview