значение ng-модели должно быть объектом даты - PullRequest
0 голосов
/ 21 сентября 2018

Я создаю приложение CRUD из материала angularjs.Поэтому, когда я хочу добавить нового пользователя, день рождения должен быть тегом <md-datepicker>.

<md-datepicker ng-model="add.user.BirthDate" md-placeholder="Enter date"></md-datepicker>

Это тег HTML.

Но когда я хочу отредактировать пользователя, у меня возникает ошибка, что модель должна быть датой

<md-datepicker ng-model="edit.user.BirthDate" md-placeholder="Enter date"></md-datepicker>

Это для редактирования, и я вызываю fuction в диалоговом окне, потому что долженбыть обновлением пользователя

////EDIT USER

//POP UP
$scope.showEdit = function (ev, user) {
 $mdDialog.show({
    controller: SampleController,
    templateUrl: 'app/main/sample/edit.tmpl.html',
    parent: angular.element(document.body),
    targetEvent: ev,
    clickOutsideToClose: true,
    fullscreen: $scope.customFullscreen,
    locals: {
      user: user,
      //map: map,
      editUser: editUser
    },
    bindToController: true,
    controllerAs: 'edit'
  });


  //FUNC
  function editUser() {



    $http({
      method: 'PUT',
      url: 'http://192.168.23.65/DetyreAPI/api/Client/UpdateClient',
      data: {
        FirstName: user.FirstName,
        LastName: user.LastName,
        BirthDate: user.BirthDate,
        Address: user.Address,
        Latitude: user.Latitude,
        Longitude: user.Longitude
      },

      headers: {
        'Content-Type': 'application/json'
      }


    }).then(function successCallback(response) {

      $mdDialog.hide();
      $scope.showUpdateAlert_Success();


    }, function errorCallback(response) {
      $mdDialog.hide();
      $scope.showUpdateAlert_Error();
    });
  }



}

А также есть функция и диалог для добавления нового пользователя

///ADD NEW USER

//POP UP
$scope.showAdd = function (ev, user) {

  $mdDialog.show({
    controller: SampleController,
    templateUrl: 'app/main/sample/add.tmpl.html',
    parent: angular.element(document.body),
    targetEvent: ev,
    clickOutsideToClose: true,
    fullscreen: $scope.customFullscreen,
    locals: {
      user: user,
      addUser: addUser
    },
    bindToController: true,
    controllerAs: 'add'
  });
}

//FUNC
function addUser(value) {



  $scope.user = {

  };




  $http({

    method: 'POST',
    url: 'http://192.168.23.65/DetyreAPI/api/Client/AddClient',
    data: value,
    headers: {
      'Content-Type': 'application/json'
    }


  }).then(function successCallback(response) {

    console.log(response.data);
    if (response.data.message === 'Ju shtuat nje kontakt me sukses!') {
      $scope.showData($scope.user);
      $mdDialog.hide();
      $scope.showAddAlert_Success();
    } else {
      $scope.showAddAlert_Error();
    }

  }, function errorCallback(response) {
    $mdDialog.hide();
    $scope.showAddAlert_Error();
  });

}

1 Ответ

0 голосов
/ 21 сентября 2018

Проблема в том, что ваша add.user.BirthDate модель не является действительным объектом даты .Значение вашей модели: 1999-01-01, в то время как действительный объект даты выглядит следующим образом

Fri Sep 21 2018 15:06:23 GMT+0200 (Midden-Europese zomertijd)

Таким образом, чтобы преобразовать вашу модель в действительный объект даты , вы можете сделать

Создайте пользовательскую директиву, которая преобразует дату в объект даты

.directive('mdDatepicker', function () {
  function link(scope, element, attrs, ngModel) {

    // This will format the model
    ngModel.$parsers.push(function(valueFromInput) {

      // Format displayed value in timestamp format and store it to ngModel
      return new Date(valueFromInput);
    });
  }
  return {
    require: 'ngModel',
    link: link,
    restrict: 'EA',
    priority: 1
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...