验证输入字段并恢复上一个有效值

时间:2015-06-24 11:48:53

标签: javascript angularjs validation angularjs-directive

我正在尝试使用AngularJS指令在输入字段上设置验证,这样当用户键入无效值时,基础模型值将更改为最后一个有效值。这是指令的内容:

      // returns true/false
      function validateValue(value) {

      }

      ngModelCtrl.$parsers.push(validateValue);
      ngModelCtrl.$formatters.push(validateValue);

      scope.$watch(attrs.checkValidName, function() {
            ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue);
      });

因此,根据我的理解,此代码基本上会在输入值的每次更改时运行validateValue回调,并根据返回值将输入字段标记为有效/无效。这对于基本验证非常有用,但是如果值无效,则会产生副作用,模型值不会包含任何内容。我不确定如何更改代码,以便当值无效时,模态值实际上包含最后一个有效值?

1 个答案:

答案 0 :(得分:0)

也许你可以覆盖NgModelController中的$$writeModelToScope。仅在控制器有效时才更新范围值。

  ngModelCtrl.$$$writeModelToScope = ngModelCtrl.$$writeModelToScope;
  ngModelCtrl.$$writeModelToScope = function() {
    if (ngModelCtrl.$valid) {
      ngModelCtrl.$$$writeModelToScope();
    }
  };