piszę dyrektywę, która będzie działać tak:automatycznego zapisywania na rozmycie + „Cofnij” przycisk
- umożliwiają edycję jakiegoś tekstu (za pomocą zawartości edycji)
- na utratę ostrości należy zapisać jego wartość model (ostatnio oglądany i zapisywany w DB)
- powinien być przycisk "Cofnij", który przywraca zmiany.
Moja implementacja jest: http://plnkr.co/edit/DsWEYQV4j51i4GO6KjSe?p=preview
Jedyny problem mam jest po naciśnięciu „cofnąć” przycisk, DIV stracić ostrość (tak zdarzenie „focusOut” jest zwolniony) i wartość jest zapisywana w modelu, więc " cofnij "przycisk nie może przywrócić swojej wartości.
(klikam "cofnąć" -> focusOut zdarzenia (autozapis) -> kliknij zdarzenie (??? nie można cofnąć))
Możliwe obejścia widzę:
- ustawić czas na rozmycie i anuluj, jeśli został naciśnięty przycisk "cofnij". Ale jest to brzydkie, ponieważ użytkownik może wprowadzić wartość i przejść do innej części aplikacji, więc oszczędzanie z przekroczeniem limitu czasu nie uruchomi żadnych obserwatorów.
- zapisać wartość na focusin i przywrócić ją po zapisaniu przycisku "cofnij". Powoduje to inny problem: $ watch detektory będą działały ze zmienioną wartością, a następnie uruchomione ponownie z poprzednią wartością (więc nie byłoby 2 zapisów do DB zamiast jednego)
Czy ktoś ma rozwiązanie takiego zachowania (autosave na rozmycie + undobutton)?
Myślę, że będziesz musiał żyć z dwoma zapisami DB (obejście # 2). Ponieważ nie możesz wiedzieć, czy użytkownik ma zamiar uderzyć w "Cofnij", musisz najpierw zapisać zmienioną wartość, jeśli potrzebujesz zachowania autozapisu. Mamy nadzieję, że operacje cofania będą rzadkie, a zatem podwójne zapisy DB będą pisane. –
Widziałeś to? http://stackoverflow.com/questions/13320015/how-to-write-a-dounce-service-in-angularjs Może ci pomóc z autozapisaniem –