2013-07-21 16 views
5

Ich benutze AngularJS TimePicker (ui.bootstrap.timepicker). Ich möchte ein Ereignis auslösen, wenn der Timepicker geändert wird. Ich suchte nach einem ng-Änderungsattribut, fand aber keins.angularjs timepicker ng-change

Mein Zweck ist, dass ich die Änderungen speichern möchte, die an das Modell vorgenommen werden, wenn die Zeit geändert wird. Im Moment habe ich ng-model verwendet, um das Modell zu setzen, aber ich kann nicht herausfinden, wie ich den Controller benachrichtigen soll, damit er den Speichervorgang ausführen kann (das Modell wird auf lokalem Speicher serialisiert). Ich möchte die Verwendung eines "Speichern" -Buttons wenn möglich vermeiden.

Zu einem verwandten Hinweis möchte ich auch dasselbe für ui.bootstrap.datepicker tun.

Antwort

10

Sie könnten $ scope. $ Watch verwenden, um auf Änderungen des Zeitpickers (oder Datepickers) zu warten und die im Controller benötigten Befehle aufzurufen. Hier ist eine plunker, die auf dem Bootstrap-Beispiel basiert, aber immer dann alarmiert, wenn die Zeit geändert wird. Sie sollten in der Lage sein, eine ähnliche Logik für Datepicker anzuwenden.

+0

Danke rajasaur, das wird gut funktionieren. –

+2

Gute und einfache Lösung. Der beste Teil ist, dass dies auch funktioniert, wenn Sie das gleiche "Date" -Objekt zwischen "datepicker" und "timepicker" teilen. Sie werden jedoch in Schwierigkeiten geraten, wenn Ihre Initialisierungsroutine nicht zu 100% korrekt eingerichtet ist. Stellen Sie sicher, dass der Zeitpicker (oder seine Eltern) nicht erstellt wird, es sei denn, die Zeit wurde festgelegt. Sonst wird Ihre Anfangszeit immer mit der aktuellen Uhrzeit überschrieben. Sie können das tun, indem Sie 'ng-if' verwenden:' ' – Domi

+0

Domi, ich stehe etwas ähnliches Problem, können Sie helfen was zu setzen, da ich Ihre Lösung in Kommentaren nicht verstanden habe. gepostet Frage für das gleiche: http://StackOverflow.com/Questions/29148040/angularjs-xeditable-Plugin-BDetail-weird-behaviour – Jayesh

Verwandte Themen