2013-07-21 23 views
5

Używam AngularJS TimePicker (ui.bootstrap.timepicker). Chciałbym wystrzelić zdarzenie, gdy zmieni się timepicker. Szukałem atrybutu ng-change, ale go nie znalazłem.angularjs timepicker ng-change

Moim celem jest to, że chciałbym zapisać zmiany wprowadzone do modelu po zmianie czasu. W tej chwili użyłem modelu ng do ustawienia modelu, ale nie mogę wymyślić, jak powiadomić kontroler, aby mógł wykonać zapis (model jest serializowany do localstorage). Chciałbym uniknąć użycia przycisku "Zapisz", jeśli to możliwe.

W powiązanej notatce chciałbym zrobić to samo dla ui.bootstrap.datepicker.

Odpowiedz

10

Możesz użyć $ scope. $ Watch, aby posłuchać zmian w timepicker (lub datepicker) i wywołać wszystko, co jest potrzebne w kontrolerze. Oto plunker, który jest oparty na przykładzie ładowania początkowego, ale jest ostrzegany za każdym razem, gdy zmieni się czas. Powinieneś być w stanie zastosować podobną logikę także do datepika.

+0

Dziękuję rajasurze, to zadziała dobrze. –

+2

Dobre i proste rozwiązanie. Najlepsze jest to, że działa to nawet wtedy, gdy współużytkujesz ten sam obiekt 'Date' między' datepicker' i 'timepicker'. Jeśli jednak procedura inicjalizacji nie zostanie poprawnie skonfigurowana w 100%, napotkasz problemy. Upewnij się, że nie utworzyłeś timepika (lub jego rodziców), chyba że czas został ustawiony. Inaczej twój początkowy czas będzie zawsze nadpisywany bieżącym czasem. Możesz to zrobić, używając 'ng-if':' ' – Domi

+0

Domi, mam do czynienia z podobnym problemem, możesz pomóc? co ustawić, bo nie zrozumiałem twojego rozwiązania w komentarzach. wysłano pytanie na to samo: http://stackoverflow.com/questions/29148040/angularjs-xeditable-plugin-bstime-weird-behavour – Jayesh