Ich habe eine Eingabe definiert als
<input class="datepicker" type="text" ng-model="clientForm.birthDate" />
Welches ist manipuliert, um an anderer Stelle auf der Seite angezeigt zu werden:
<tr>
<th>Birth Date</th>
<td>{{client.birthDate|date:'mediumDate'}}</td>
</tr>
Wenn die Seite geladen wird, wird das Geburtsdatum so gut wie formatiert Dec 22, 2009
. Wenn ich jedoch in mein Bild schaue <input>
, wird angezeigt, Tue Dec 22 2009 00:00:00 GMT-0800 (Pacific Standard Time)
wie JS Date
Objekte als Zeichenfolgen rendert .
Erstens, wie kann ich Angular anweisen, das Datum in <input>
so etwas wie anzuzeigen 12/22/2009
? Ich kann mich nicht |filters
innerhalb des ng-model
Attributs bewerben .
Zweitens <td>
scheint mein anderer Text (innerhalb des ) den |date
Filter nicht mehr anzuwenden , sobald ich das Datum bearbeite und es sogar im Originalformat behalte. Es ändert plötzlich das Format, um es an das Eingabetextfeld anzupassen. Wie kann ich den |date
Filter bei jedem Modellwechsel anwenden ?
Verwandte Fragen:
Date()
Funktionen:$scope.departDate = new Date(); $scope.departTime = $scope.departDate.toTimeString().slice(0, 5);
Und keine Notwendigkeit für andere Filter oder knifflige Problemumgehungen in AngularJS IMO.Antworten:
Verwenden Sie die benutzerdefinierte Validierung von Formularen http://docs.angularjs.org/guide/forms Demo: http://plnkr.co/edit/NzeauIDVHlgeb6qF75hX?p=preview
Direktive mit Formatierern und Parsern und MomentJS )
quelle
var dateFormat = attrs.moMediumDate;
und nichtvar dateFormat = attrs.moDateInput;
moMediumDate scheint nirgendwo festgelegt zu sein. Wenn die Eingaben nicht dynamisch erstellt werden, wird niemals ein Anfangsformat ausgewählt.Hier ist eine sehr praktische Direktive Winkel-Datum / Uhrzeit . Sie können es so verwenden:
Außerdem wird Ihrer Eingabe eine Maske hinzugefügt und eine Validierung durchgeführt.
quelle
datetime="<format>"
Attributwert angegebene Format mit dem in derdateFormat
Option Datepicker angegebenen Format übereinstimmt .Ich habe eine einfache Anweisung erstellt, damit Standardformularelemente
input[type="date"]
mit AngularJS ~ 1.2.16 ordnungsgemäß funktionieren.Schauen Sie hier: https://github.com/betsol/angular-input-date
Und hier ist die Demo: http://jsfiddle.net/F2LcY/1/
quelle
Ich verwende jquery datepicker, um das Datum auszuwählen. Meine Direktive liest das Datum und konvertiert es in das json-Datumsformat (in Millisekunden), speichert es in
ng-model
Daten, während das formatierte Datum angezeigt wird.HTML Quelltext:
Winkelrichtlinie:
quelle
element.datepicker
mitelement.pickadate
Da Sie Datepicker als Klasse verwendet haben, gehe ich davon aus, dass Sie einen Jquery-Datepicker oder ähnliches verwenden.
Es gibt eine Möglichkeit, das zu tun, was Sie beabsichtigen, ohne moment.js zu verwenden, indem Sie nur die Direktiven datepicker und anglejs verwenden.
Ich habe hier in dieser Geige ein Beispiel gegeben
Auszüge aus der Geige hier:
Datepicker hat ein anderes Format und AngularJS-Format ist unterschiedlich. Sie müssen die entsprechende Übereinstimmung finden, damit das Datum im Steuerelement vorausgewählt und auch im Eingabefeld ausgefüllt wird, während das ng-Modell gebunden ist. Das folgende Format entspricht dem
'mediumDate'
Format von AngularJS.Die Datumseingabeanweisung muss eine vorläufige Zeichenfolgenvariable enthalten, um die vom Menschen lesbare Datumsform darzustellen.
Das Aktualisieren über verschiedene Seitenabschnitte sollte über Ereignisse wie
$broadcast
und erfolgen$on
.Die Verwendung eines Filters zur Darstellung des Datums in lesbarer Form ist auch im ng-Modell möglich, jedoch mit einer temporären Modellvariablen.
quelle
Ich verwende die folgende Anweisung, die mich und die meisten Benutzer sehr glücklich macht! Es verwendet Moment zum Parsen und Formatieren. Es sieht ein bisschen aus wie das von SunnyShah, das bereits erwähnt wurde.
In meiner Form benutze ich es so:
Dadurch wird ein Zeitstempel (Millisekunden seit 1970) an
doc.begin
und gebundendoc.end
.quelle
ngModel
Ihre benutzerdefinierte Kennung für das Controller-Argument befindet und kein direkter, benannter Verweis aufngModel
. Dies ist ein Punkt, an dem die Konvention, dieses Argument als "Strg" oder "Controller" zu bezeichnen, die Dinge klarer hält und Verwirrung vermeidet.In Angular2 + für alle Interessierten:
mit Filtertyp in DatePipe Angular.
quelle
Ich möchte, dass der Server das Datum ohne Änderung zurückgibt und Javascript die Ansicht massiert. Meine API gibt "MM / TT / JJJJ hh: mm: ss" von SQL Server zurück.
Ressource
Regler
myDate-Validierungsrichtlinie
HTML
template / validation / messages.html
quelle
Angularjs UI-Bootstrap Sie können AngularJs UI-Bootstrap verwenden. Es bietet auch eine Datumsüberprüfung
In der Steuerung können Sie festlegen, in welchem Format das Datum als Datumsfilter angezeigt werden soll.
$ scope.formats = ['TT-MMMM-JJJJ', 'JJJJ / MM / TT', 'TT.MM.JJJJ', 'Kurzdatum'];
quelle