Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2014, 07:25
Новичок на форуме
Отправить личное сообщение для Shinoby Посмотреть профиль Найти все сообщения от Shinoby
 
Регистрация: 18.07.2014
Сообщений: 4

Как заставить NgModelController поставить свойству модели null
Недавно начал разбираться с ангуляром и столкнулся с одной проблемой.

Мне необходимо допилить одну директиву (контрол для формы)
Для очистки значения использую ngModel.$setViewValue(null) при этом в модель записывается undefined. Не могу понять, как сделать так, чтобы
вместо
{
    uname: 'blablabla';
    ugroup: undefined;
}

было
{
    uname: 'blablabla';
    ugroup: null;
}

Пробовал пропускать значение через $parsers и $formatters. Но в итоге все-равно получаю undefined.
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2014, 07:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Посмотрите на исходник $setViewValue - что он делает со значением?
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2014, 13:18
Новичок на форуме
Отправить личное сообщение для Shinoby Посмотреть профиль Найти все сообщения от Shinoby
 
Регистрация: 18.07.2014
Сообщений: 4

Сообщение от Aetae Посмотреть сообщение
Посмотрите на исходник $setViewValue - что он делает со значением?
Смотрел я исходники, но пока не понял механизм обновления свойств модели
Ответить с цитированием
  #4 (permalink)  
Старый 22.07.2014, 13:34
Аватар для FireVolkhov
Аспирант
Отправить личное сообщение для FireVolkhov Посмотреть профиль Найти все сообщения от FireVolkhov
 
Регистрация: 17.04.2013
Сообщений: 88

На элементе input (или там где ng-model) есть атрибут required?
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2014, 07:18
Новичок на форуме
Отправить личное сообщение для Shinoby Посмотреть профиль Найти все сообщения от Shinoby
 
Регистрация: 18.07.2014
Сообщений: 4

FireVolkhov, ага стоял required.

Теперь понял, если на элементе есть required, то в модель пишется undefined. если нет, то null.

Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2014, 09:07
Аватар для FireVolkhov
Аспирант
Отправить личное сообщение для FireVolkhov Посмотреть профиль Найти все сообщения от FireVolkhov
 
Регистрация: 17.04.2013
Сообщений: 88

Не совсем так, просто в 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
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как заменить null на текст? FredIkO Общие вопросы Javascript 2 07.01.2014 21:55
Как ссылки из меню «Выберите модель» поставить с помощью тега <a> Werwolf23188 Общие вопросы Javascript 10 16.12.2013 22:05
var timing = {s: null, e: null, t: null}; Как это и для чего это? xcislav Общие вопросы Javascript 1 25.11.2013 23:44
Как поставить мои ajax запросы в очередь? Romingood AJAX и COMET 1 18.10.2013 23:38