2013-05-16 8 views
9

私は角度付きの設定Web APIで動作するWebクライアントを作成しています。 多くの設定があり、すべてオプションです。私が設定を送信する場合は、保存する必要があります。送信されない設定は変更しないでください。角度のあるフォーム - 変更されたフィールドのみを送信する

すべての設定での変更を保存するボタンが必要です。

これを実装するためにAngularにいくつかの方法があるのだろうかと思います。

私はHTML formを使用せず、データを収集し、自分でajaxリクエストを作成することを考えましたが、検証メカニズム(これはAngular-UIの検証でうまくいきます)を失います。

私は、フォームを小さなフォームに分割し、ng-dirtyがfalseでないフォームのみを送信することを考えましたが、一部のリクエストが失敗した場合にこれが部分的に保存される可能性があります。

答えて

6

Angularのドキュメントには、リセット機能を実装するためのng-copyをカバーする例があります。あなたが変更された/提出物(変更コピー)にご出発モデル(マスターコピー)を比較してのみ変更された項目を提出する(あるいは単に変わらない/同じものを削除する)ことができ提出時に

http://docs.angularjs.org/cookbook/advancedform

でコピーとマスターを比較するhttp://blog.vjeux.com/2011/javascript/object-difference.html これは、配列を処理するために余分な作業が必要です。 JSONに変換してJSONを比較する https://github.com/benjamine/JsonDiffPatch

+0

これは私が探していたものではありませんが、これは角度がこの機能をボックスの外に提供していないことを意味します。ありがとうございました。 –

+2

これはホイール角型のFormControllerを再開発しており、ngModelはすでにダーティチェックを実行し、クラスを追加してこの情報を$ scopeに格納します。 r4w87173 –

+0

@ArturBoderaからの回答を見るこのプロセスを自動化したいのですが?私は入力名とモデル属性を追跡する必要があるようです。 (私は実際に尋ねている)。 – keyser

17

送信前にフォームまたは名前付きフィールドが変更されているかどうかを確認できます。フォームには名前を持っており、あなたの入力はのような名前がある場合:コントローラで

<form name="myForm"> 
    <input name="input1"> 
</form> 

を、あなたは、オブジェクト$scope.myForm$scope.myForm.input1にアクセスする必要がありますし、元の値であった場合、これらのオブジェクトは真である$dirty性質を持っていますユーザによって変更される。

関連する問題