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?

War es hilfreich?

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;
    };
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top