Wie formatiere ich Daten in einer Ansicht in AngularJS?
-
20-12-2019 - |
Frage
<input type="text" ng-model="user.User.DateOfBirth">
ist aus meiner Sicht. user.User.DateOfBirth
ist derzeit drin YYYYMMDD
Format, aber ich möchte, dass es als angezeigt wird mm/dd/yyyy
Format in der Ansicht.Ist es möglich, dies nur für die Anzeige umzuwandeln?
Lösung
Um die Daten im richtigen Format auszugeben, versuchen Sie es mit Filtern (in Ihrem Fall dem Datumsfilter: http://docs.angularjs.org/api/ng.filter:date)
Nun, bei Eingaben ist das ein anderer Fall.Ich denke, Sie könnten diese Eingabe jederzeit an eine andere Eigenschaft binden, sie beobachten und selbst analysieren und sie dann Ihrem realen Modell zuweisen ...
Um mehr Einblick zu gewinnen, könnten Sie Folgendes versuchen:
HTML:
<input type="text" ng-model="myDateInput">
Verwenden Sie in Ihrem JS-Controller Folgendes:
$scope.$watch('myDateInput', function (newValue) {
$scope.user.User.DateOfBirth = $filter('date')(newValue, 'yyyy-MM-dd'); // Or whatever format your real model should use
});
$scope.$watch('user.User.DateOfBirth', function (newValue) {
$scope.myDateInput = $filter('date')(newValue, 'yyyy-MM-dd'); // Or whatever format your input should use
});
Es wäre jedoch wahrscheinlich besser, den Benutzer zu zwingen, ein bestimmtes Eingabeformat zu verwenden, entweder durch eine Art Mustervergleich (und damit Validierung) oder durch eine Art spezielle Datumseingabe/Widget.
Andere Tipps
Dies kann Ihnen auch helfen
http://jsfiddle.net/mikeeconroy/Hu9m2/1/
.filter('myFormatDateFilter',function(){
return function(input){
if(angular.isDefined(input)){
if(input.length >= 8){
input = input.slice(0,8);
input = input.slice(4,6) + '/' + input.slice(6,8) + '/' + input.slice(0,4);
}
}
return input;
};
});