【问题标题】:Difference between modelValue and viewValuemodelValue 和 viewValue 的区别
【发布时间】:2014-11-04 10:58:37
【问题描述】:

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

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 有什么区别?

【问题讨论】:

  • @RahilWazir - 该链接对$validators 签名帮助不大。我知道 angular 是一个庞大的库,但函数签名应该是必需的文档。尤其是考虑到 javascript 的动态特性。

标签: angularjs angularjs-directive


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多