Ich habe eine datetimepicker, die ich mit eckigen js verwenden .. zuerst werde ich etwas Code zeigen.Scope-Änderungen propagieren nicht zum übergeordneten Bereich (eckig, bootstrap datetime picker)
die html
<div class="container">
<div class= "row">
<div class= "col-sm-6">
<div class= "form-group">
<div class= "input-group date" id= "datetimepicker1">
<input ng-model= "startDate" type= "text" class= "form-control" />
<span class= "inpu-group-addon">
<span class= "glyphicon glyphicon-calendar"></span>
</span>
</div>
<input type= "button" value= "Check Value" ng-click= "check()"/>
</div>
</div>
</div>
</div>
Die Javascript
app.controller('DateTimePicker', [
'$scope', function($scope) {
$scope.check = function() {
alert($scope.startDate);
}
function init() {
$('#datetimepicker1').datetimepicker();
$('#datetimepicker1').on('dp.change', function() {
$scope.startDate = $('#datetimepicker1').val();
});
}
init();
}
]);
Dies ist der Kern meiner Einrichtung. Wenn ich nun auf den "Check Value" -Button klicke, werde ich undefiniert. Dies passiert immer, nachdem ich das Popup-Menü geöffnet und ein Datum/eine Uhrzeit ausgewählt habe.
Ich dachte, dies liegt daran, dass die "check" -Funktion als Teil des Bereichs der Controller-Ebene definiert wurde und alles, was im datetimepicker ausgewählt wurde (als "startDate"), war Teil eines anderen untergeordneten Bereichs.
Ein kleiner Test scheint dies bestätigt zu haben.
$scope.startDate = "2016-07-05";
$scope.check = function() {
alert($scope.startDate); // this gets called with the value above
}
Der hartcodierte Wert wird alarmiert, aber es wird nie auf den Wert I in der Datumsauswahl wählen aktualisiert ... auch mit dem Hörer ich ihn zugeordneten, um mehr oder weniger manuell einstellen.
Gibt es eine Möglichkeit, dass ich die Oszilloskope auf diese Weise nicht mehr kollidieren lassen kann?
Ich würde empfehlen, datetime plugins zu einer reinen eckigen Lösung zu schalten, wie die in ui-bootstrap – jbrown
@jbrown ist richtig, jQuery plugins und AngularJS funktioniert nicht nahtlos. Sie können das jQuery-Plugin nicht verwenden und erwarten, dass Daten einfach so in 'ngModel' propagiert werden. – MiTa
Ich brauche auch etwas mit einer Zeitauswahl. Ich hatte wirklich gehofft, dass ich einfach die existierende Bibliothek benutzen könnte, anstatt zu versuchen, mehrere Bibliotheken zusammen zu hacken. – Zack