Подтвердить что ты не робот

Angular ng-model: пустые строки должны быть нулевыми

Если я использую ng-model для поля ввода и опустошаю его, angular устанавливает его в '' вместо null, даже если раньше он был null.

Это проблема в моем случае, потому что мне нужно отправить null на сервер, если поле ввода пуст, а не ''.

Можно ли указать angular настройку "пустых" моделей ввода на null?

4b9b3361

Ответ 1

Вы можете захотеть $watch для пустого значения и установить его на null:

<input type="text" ng-model="test.value" />
$scope.$watch('test.value', function (newValue, oldValue) {
  if(newValue === "")
    $scope.test.value = null;
});

Другим способом было бы использовать настраиваемую директиву и применить к ней $parsers:

<input type="text" ng-model="test.value" empty-to-null />
myApp.directive('emptyToNull', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, elem, attrs, ctrl) {
            ctrl.$parsers.push(function(viewValue) {
                if(viewValue === "") {
                    return null;
                }
                return viewValue;
            });
        }
    };
});