Как заставить NgModelController поставить свойству модели null
Недавно начал разбираться с ангуляром и столкнулся с одной проблемой.
Мне необходимо допилить одну директиву (контрол для формы) Для очистки значения использую ngModel.$setViewValue(null) при этом в модель записывается undefined. Не могу понять, как сделать так, чтобы вместо { uname: 'blablabla'; ugroup: undefined; } было { uname: 'blablabla'; ugroup: null; } Пробовал пропускать значение через $parsers и $formatters. Но в итоге все-равно получаю undefined. |
Посмотрите на исходник $setViewValue - что он делает со значением?
|
Цитата:
|
На элементе input (или там где ng-model) есть атрибут required?
|
FireVolkhov, ага стоял required.
Теперь понял, если на элементе есть required, то в модель пишется undefined. если нет, то null. Спасибо :) |
Не совсем так, просто в Angular required то же директива.
Вот исходник var requiredDirective = function() { return { require: '?ngModel', link: function(scope, elm, attr, ctrl) { if (!ctrl) return; attr.required = true; // force truthy in case we are on non input element var validator = function(value) { if (attr.required && ctrl.$isEmpty(value)) { ctrl.$setValidity('required', false); return; // <- Все дело вот в этом } else { ctrl.$setValidity('required', true); return value; } }; ctrl.$formatters.push(validator); ctrl.$parsers.unshift(validator); attr.$observe('required', function() { validator(ctrl.$viewValue); }); } }; };И там видно, если не пройти валидацию (a null не проходит), то выполнется return;и результат undefined |
Часовой пояс GMT +3, время: 01:54. |