modelValue和viewValue之间的区别

时间:2014-11-04 10:58:37

标签: angularjs angularjs-directive

使用自定义指令,添加验证函数以验证整数输入

var INTEGER_REGEXP = /^\-?\d+$/;
app.directive('integer', function() {
  return {
    require: 'ngModel',
    link: function(scope, elm, attrs, ctrl) {
      ctrl.$validators.integer = function(modelValue, viewValue) {
        if (ctrl.$isEmpty(modelValue)) {
          // consider empty models to be valid
          return true;
        }

        if (INTEGER_REGEXP.test(viewValue)) {
          // it is valid
          return true;
        }

        // it is invalid
        return false;
      };
    }
  };
});

$ validators对象中的每个函数都接收modelValue和viewValue。

modelValue和viewValue有什么区别?

1 个答案:

答案 0 :(得分:4)

可以在ngModelController中定义$formatter$parser。 viewValue是呈现指令用于绘制自身的值,modelValue是在应用了ngModel的$parser列表后存储在作用域中的值。如果更改范围中的值,ngModel将通过其$formatters运行该值,然后由呈现指令将其作为viewValue读取。

viewValue通常是输入元素中显示的字符串,而modelValue是已解析为目标格式的值(例如,datepicker指令中的Date对象)