javascript - powerful - python rest framework




Erreur:[ngModel: datefmt] Attendu que `2015-05-29T19: 06: 16.693209Z` soit une date-Angulaire (6)

Je travaille sur angular application angular avec Django avec rest-framework ..

L'application reçoit les informations avec JSON du serveur .. Une des clés est created_time ... La valeur de ce champ est au format, conformément à la 2015-05-29T19:06:16.693209Z iso-8601 , par exemple 2015-05-29T19:06:16.693209Z .

Dans le client, j'ai un champ:

<input type="time" ng-model="created_time">

Mais quand les données arrivent, j'obtiens cette erreur:

Error: [ngModel:datefmt] Expected `2015-05-29T19:06:16.693209Z` to be a date http://errors.angularjs.org/1.3.13/ngModel/datefmt?p0=2015-05-29T19%3A06%3A16.693209Z
at REGEX_STRING_REGEXP (angular.js:63)
at Array.<anonymous> (angular.js:19807)
at Object.ngModelWatch (angular.js:23289)
at Scope.$get.Scope.$digest (angular.js:14235)
at Scope.$get.Scope.$apply (angular.js:14506)
at done (angular.js:9659)
at completeRequest (angular.js:9849)
at XMLHttpRequest.requestLoaded (angular.js:9790)

J'ai déjà tout essayé :( le format est exactement comme les instructions dans les docs de angular ...


Cela doit se produire avec un angulaire 1.3+. 1.3+ sur wards-modèle pour l'entrée date / heure doit être un objet date valide, la représentation sous forme de chaîne de la date n'est plus autorisée. Vous devez convertir une chaîne en objet date ( $scope.created_time = new Date(dateString) ) et la lier au modèle ng. Si vous suivez le lien d'erreur, il contient une description claire de l'erreur et de la façon de la résoudre.

Toutes les entrées liées à la date, par exemple, exigent que le modèle soit un objet Date. Si le modèle est autre chose, cette erreur sera renvoyée. Angular ne définit pas d'erreurs de validation dans ce cas car ces erreurs sont montrées à l'utilisateur, mais l'état erroné a été provoqué par une logique d'application incorrecte et non par l'utilisateur.


Créez une directive simple qui convertit la valeur du modèle:

HTML:

<input date-input type="time" ng-model="created_time">

Directif:

app.directive('dateInput', function(){
    return {
        restrict : 'A',
        scope : {
            ngModel : '='
        },
        link: function (scope) {
            if (scope.ngModel) scope.ngModel = new Date(scope.ngModel);
        }
    }
});

J'ai eu cette erreur et j'ai directement utilisé l'objet: je poste la solution que j'ai réalisée:
1: $ userData.dob = new Date (userData.dob); 2: $ scope.edit.userdob = userData.dob; avant 1 j'ai fait face à l'erreur ci-dessus, alors j'ai directement créé l'objet et l'a affecté à la portée d'édition et le problème a été résolu.


Si vous devez mettre à jour toutes les dates dans Tableau avec objets

var data = [
  { id: "1" , birthday: "2016-01-20T11:24:20.882Z"},
  { id: "2" , birthday: "2016-01-20T11:24:20.882Z"},
  { id: "3" , birthday: "2016-01-20T11:24:20.882Z"},
];

  function convertDataStingToObject (data) {
    for(var i=0; i < data.length; i++ ){
      console.log('string: ' + data[i].birthday);
      data[i].birthday = new Date(data[i].birthday);
      console.log('updated: ' + data[i].birthday);
      console.log(typeof(data[i].birthday));
    }

    return data;
  }

convertDataStingToObject(data);

si la date est réduite de 1 jour, utilisez ce code,

new Date(moment.utc(value).format('l LT'))

Problème En fait, c'est un problème de format de date, j'ai résolu ce problème en utilisant cette partie de code. Solution: le morceau de code ci - dessous résoudra ce problème:

            var options = {
                weekday: "long", year: "numeric", month: "short",
                day: "numeric", hour: "2-digit", minute: "2-digit"
            };
            $scope.created_time = $scope.created_time.toLocaleTimeString("en-us", options);

où en-us format = "vendredi 1 févr. 2013 06:00", espérons que cela aidera les autres à résoudre le problème, je faisais face à une telle erreur et je le résolvais.





django-rest-framework