Установка controller.$options в функции link, похоже, работает для устранения событий blur :

controller.$options = {
  updateOn : 'blur',
  debounce : 3000
};

... но если я попробую то же самое для событий default , модель никогда не обновится:

controller.$options = {
  updateOn : 'default',
  debounce : 3000
};

При использовании вместо этого директивы ng-model-options все работает должным образом.

См. http://plnkr.co/edit/KLrSrs2Jw7pkoAUNRJDf?p=preview.

17
ejain 4 Дек 2014 в 23:41

2 ответа

Лучший ответ

Глядя на источник директивы ngModelOptions, появляется, что вместо установки updateOn : 'default' необходимо установить controller.$options.updateOnDefault = true;

18
ejain 4 Дек 2014 в 23:51
1
И снова нужно смотреть исходники, о, спасибо, ребята! отличная документация по API
 – 
Carlos Morales
19 Янв 2016 в 16:23

Для вашего случая вы можете попробовать

ngModelController.$options = {
    updateOn: 'blur',
    updateOnDefault: true,
    debounce: {
      'blur': 2000,
      'default': 3000
    }
  };

Но теперь (ng1.6 +) вы должны сделать это как (подробнее здесь, здесь и здесь):

ngModelController.$overrideModelOptions({
    updateOn: 'blur',
    updateOn: 'default',
    debounce: {
      'blur': 2000,
      'default': 3000
    }
});
19
Xavier Haniquaut 1 Июн 2018 в 10:53