2013-07-21 10 views
5

Sto usando AngularJS TimePicker (ui.bootstrap.timepicker). Vorrei attivare un evento quando viene modificato il timepicker. Ho cercato un attributo ng-change, ma non l'ho trovato.angularjs timepicker ng-change

Il mio scopo è che vorrei salvare le modifiche apportate al modello quando l'ora è cambiata. In questo momento ho usato ng-model per impostare il modello, ma non riesco a capire come notificare il controller in modo che possa eseguire il salvataggio (il modello è serializzato su localstorage). Vorrei evitare l'uso di un pulsante "Salva", se possibile.

Su una nota correlata, vorrei anche fare la stessa cosa per ui.bootstrap.datepicker.

risposta

10

È possibile utilizzare $ scope. $ Guardare per ascoltare le modifiche al timepicker (o datepicker) e chiamare qualsiasi cosa sia necessaria nel controller. Ecco un plunker che si basa sull'esempio bootstrap ma avvisa ogni volta che viene modificata l'ora. Dovresti essere in grado di applicare una logica simile anche per datepicker.

+0

Grazie rajasaur, funzionerà bene. –

+2

Soluzione buona e semplice. La parte migliore è che funziona anche se si condivide lo stesso oggetto 'Date' tra' datepicker' e 'timepicker'. Tuttavia, si verificherà un problema se la routine di inizializzazione non è impostata correttamente al 100%. Assicurati di non creare il timepicker (oi suoi genitori) a meno che non sia stato impostato il tempo. Altrimenti, l'ora iniziale verrà sempre sovrascritta con l'ora corrente. Puoi farlo usando 'ng-if':' ' – Domi

+0

Domi, sto affrontando un problema in qualche modo simile, puoi aiutare cosa impostare come non ho capito la tua soluzione nei commenti. domanda postata per lo stesso: http://stackoverflow.com/questions/29148040/angularjs-xeditable-plugin-bstime-weird-behaviour – Jayesh