私は次のように動作するディレクティブを書いています:
- 一部のテキストの編集を許可する (編集可能なコンテンツを使用)
- フォーカスを失うと、その値をモデルに保存する必要があります(最近監視され、DBに保存されます)
- 変更を元に戻す「元に戻す」ボタンがあるはずです。
私の実装は: http://plnkr.co/edit/DsWEYQV4j51i4GO6KjSe?p=preview
私が持っている唯一の問題は、「元に戻す」ボタンを押すと、DIV がフォーカスを失い (「focusout」イベントが発生する)、値がモデルに保存されるため、「元に戻す」ボタンでその値を元に戻すことができないことです。
(「元に戻す」をクリックします -> focusout イベント (自動保存) -> イベントをクリックします (??? can't revert) )
私が見る可能な回避策:
- ぼかしにタイムアウトを設定し、「元に戻す」ボタンが押された場合はキャンセルします。ただし、ユーザーが値を入力してアプリの他の部分に移動できるため、保存がタイムアウトすると $watch リスナーが実行されないため、見苦しくなります。
- focusin で値を保存し、「元に戻す」ボタンが保存されたときに復元します。これは別の問題を引き起こします: $watch リスナーは変更された値で実行され、その後、以前の値で再度実行されます (したがって、1 回ではなく 2 回の DB への書き込みが発生します)。
このような動作の解決策はありますか (ぼかし + 元に戻すボタンの自動保存)?