2014-04-10 21 views
28

Mam do czynienia z jednym problemem podczas korzystania z $ dirty w moim formularzu zgłoszeniowym.

Problem jest po zmianie pola formularza, wartość $ brudny dostanie ustawiony prawdziwej ale teraz kiedy cofnąć zmiany nie jest resetowanie $ brudną wartość fałszywego.

Możemy ręcznie zresetować wartość $ brudny do fałszywego ale potem, kiedy ponownie zmienić swoje pole formularza wartości $ brudny nie zmieni jej wartość na prawdziwej. Zgodnie z moimi spostrzeżeniami, ustaw wartość $ brudu każdego pola w formularzu, umieszczając ng-dirty class. Nawet jeśli usuniesz tę klasę, nie będzie to miało wpływu na zachowanie $ dirty.

// Please find below attached Fiddle for code reference 

Fiddle.

Odpowiedz

52

To, czego szukasz, to $ setPristine(). Znajdziesz go w dokumencie tutaj: http://docs.angularjs.org/api/ng/type/form.FormController

Kiedy formularz ładuje się najpierw na stronie, jest w stanie o nazwie nietknięty. Znajdziesz tę formę. $ Pristine to prawda i forma. $ Dirty to false. Po wprowadzeniu jakichkolwiek zmian w elemencie, który ma wiązanie kątowe, wartości te są odwrotne. Mimo że możesz zresetować wartości wejściowe formularza do ich pierwotnego stanu, nie zmienia to stanu formy kątowej. Nawiązywanie połączenia z formularzem. $ SetPristine(); ustawia te wartości formularzy z powrotem do ich pierwotnego stanu.

+0

Czy mógłbyś mi dać Fiddle przykład w tym samym – pixelbyaj

+8

pewna rzecz: http://plnkr.co/edit/Lhdmly?p=preview – MBielski

+0

Dzięki @MBielski :) Ja to sprawdzić mój wniosek i poinformować:) – pixelbyaj