我正在尝试使用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
回调,并根据返回值将输入字段标记为有效/无效。这对于基本验证非常有用,但是如果值无效,则会产生副作用,模型值不会包含任何内容。我不确定如何更改代码,以便当值无效时,模态值实际上包含最后一个有效值?
答案 0 :(得分:0)
也许你可以覆盖NgModelController中的$$writeModelToScope
。仅在控制器有效时才更新范围值。
ngModelCtrl.$$$writeModelToScope = ngModelCtrl.$$writeModelToScope;
ngModelCtrl.$$writeModelToScope = function() {
if (ngModelCtrl.$valid) {
ngModelCtrl.$$$writeModelToScope();
}
};