2017-02-19 9 views
0

Ich habe ein Problem in datepicker mit ng-change. Das ng-change-Ereignis wird nicht ausgelöst, wenn ich den Wert durch "Klicken auf das Datum" ändere, sondern wenn ich den Wert ändere, indem ich das Datum eintippe.Angular datypicker nicht feuern ng-change

Hier ist mein Code.

<input ng-change="date_change();" ng-model="date_to" id="recon-date" name= "date_to" type="text" class="form-control" date-time view="month" auto-close="true" min-view="month" format="MM-DD-YYYY"> 

Ich verfolgen das Problem, indem Sie die datepicker.js untersuchen. Ich habe herausgefunden (wenn ich richtig liege), dass ngModelController.serViewValue() und $ render() die ng-Änderung nicht auslösen.

Ich habe versucht, Umfang hinzuzufügen. $ Apply(), aber kein Glück. Ich debugge dies seit Stunden und immer noch keinen Fortschritt.

P.S. Ich möchte $ scope. $ Watch() nicht verwenden, um dieses Problem zu lösen.

Danke!

+0

Mögliche Duplikat [AngularJS Timepicker ng-change] (http://stackoverflow.com/questions/17773412/angularjs-timepicker-ng-change) –

+0

Dank, aber ich nicht möchte $ watch event verwenden. Ich habe so viele Termine mit ngchange und möchte nicht $ watch in jedem einzelnen erstellen. – aldesabido

+0

Versuchen Sie, md-datepicker oder angular-datepicker.js anstelle von datepicker.js –

Antwort

1

Ohne ng-change, verwenden Sie einen watch

$scope.date_to; 

$scope.$watch("date_to", function(newValue, oldValue) { 
    console.log("I've changed : ", to date); 
}); 
+0

Danke, aber ich möchte $ Watch Event nicht verwenden. Ich habe so viele Termine mit ngchange und möchte nicht $ watch in jedem einzelnen erstellen. – aldesabido

+0

können Sie watchcollection in diesem Fall verwenden – Sajeetharan

1

Verwendung $apply kann dies wird Ihnen helfen.

var scope=angular.element($('#recon-date')).scope();  
scope.$apply(); 
+0

Danke. Ich werde es versuchen, wenn ich zurückkomme. Vielen Dank. – aldesabido

+0

hat nicht für mich funktioniert. – aldesabido

0

Dies liegt daran, Sie type="text" in Eingang verwenden versuchen Sie es dann zu type="date" ändern sie abgefeuert werden, wenn Sie auf date klicken wird.

Versuchen Sie, diese

<input ng-change="date_change();" ng-model="date_to" id="recon-date" name= "date_to" type="date" class="form-control" date-time view="month" auto-close="true" min-view="month" format="MM-DD-YYYY">