angular-input-modifiedモジュールを使用して、ユーザーがフォームを変更したかどうかを追跡しようとしました。グローバルに動作を無効にし、必要なフォームフィールドにのみ変更可能な動作を追加することで、包含ポリシーを使用する。 私の問題は、コレクション内の変更を追跡することです。より具体的には、私はアイテムのコレクションを持っており、ユーザがアイテムを選択すると対応するプロパティが表示されます。ユーザーがプロパティを変更すると、保存ボタンが有効になります。 は、これまでのところ、私はこれを試してみました:コレクションアイテムのユーザ選択に基づいて、今ng-switchとangle-input-modifiedの動作
COLLECTIONS
<select ng-model="wiDevCtrl.currentCollection"
ignore-dirty
ng-options="opt as opt.Name for opt in wiDevCtrl.device.Collections"></select>
とはangular-に「修正」フラグを変更するには、対応するコンテンツ
<div class="form-group subSection" bs-modifiable="true">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" /> </div>
しかし、このアプローチの原因とチェックボックスが表示されます明らかにコレクションが変更されたときに、チェックボックスで$ pristine値のように保存されたものとは異なる値(バインディングを介して)が変更されるため、入力変更されたモジュールを 'true'に設定します。
私は、コレクションごとに「peronal」チェックボックスを作成すると、問題を解決できます。そのために私はスイッチを使用しようとしました:
<div class="form-group subSection">
<div ng-switch on="wiDevCtrl.currentCollection.Name" bs-modifiable="true">
<div ng-switch-when="ng-switch-default"></div>
<div ng-switch-when="1">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" />
</div>
<div ng-switch-when="2">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" />
</div>
<div ng-switch-when="3">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" />
</div>
</div>
</div>
その後、私はほとんど1つの事を除いて正しい動作を得ました。チェックボックスを変更すると、正しく「変更済み」に設定されます。しかし、私が別のコレクションに切り替えて、 'masterValu'を返すと、このチェックボックスは$ pristineを呼び出すのとは逆に変更されましたが、私はそうしません。私は以前のコレクションに戻り、チェックボックスを元の「変更済み」状態に戻すと「偽」となることを期待しています。それは明らかに起こっていません。何か案は?ありがとう。
あなたは、ナビゲーションセレクタをMaracuyaをクリックしhere
- Plunker例を見つけることができます。チェックボックスをオンにします。 MaracuyaのようなMaster: "false"とModified:はい。
- 他の果物を選択します。
- Maracuyaに戻ってください。 Maracuya様のMasterが "真"になり、Modifiedになっていることを確認してください。いいえ、Formは変更された状態であり、変更されていない状態に戻る方法はありません。