如何在自定义指令中设置ng-model-options?

时间:2014-12-04 20:41:51

标签: angularjs angularjs-directive

controller.$options函数中设置link似乎可用于去除模糊事件:

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

...但是如果我为默认事件尝试相同的操作,模型永远不会更新:

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

当使用ng-model-options指令时,一切都按预期工作。

请参阅http://plnkr.co/edit/KLrSrs2Jw7pkoAUNRJDf?p=preview

2 个答案:

答案 0 :(得分:18)

查看source of the ngModelOptions directive,您需要设置updateOn : 'default'

,而不是设置controller.$options.updateOnDefault = true;

答案 1 :(得分:18)

对于您的情况,您可以尝试

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

但是现在(ng1.6 +)你必须这样做(阅读更多hereherehere):

ngModelController.$overrideModelOptions({
    updateOn: 'blur',
    updateOn: 'default',
    debounce: {
      'blur': 2000,
      'default': 3000
    }
});