Con*_*ens 3 validation angularjs angularjs-directive
我$validator用来编写自定义表单验证指令.
目前它看起来像这样:
module.directive('tweetLength', function(URLDetector) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
var allowedCharacters;
allowedCharacters = parseInt(attrs.tweetLength);
ctrl.$validators.tweetLength = function(modelValue, viewValue) {
var result;
return result = URLDetector.urlAdjustedCharacterCount(modelValue) <= allowedCharacters;
};
}
};
});
Run Code Online (Sandbox Code Playgroud)
它会检查它连接到的字符数的元素的模型,同时考虑到链接缩短(所以ng-minlength和ng-maxlength不工作).如果不满足要求,则返回false.问题是,当它返回false modelValue时undefined.我知道此时该值应该存储在其中$$invalidModelValue,但我仍然需要原始模型中的值,因为它在视图中的其他位置使用.
有没有办法阻止Angular移动它并制作原始模型undefined?我知道这个问题可以在表单控制器中解决,但我不认为这是正确的方法,因为我想使用表单状态而不是某些外部变量来禁用表单提交按钮.在使用Angular表单验证时是否有其他方法可以解决此问题?
从Angular v.1.3开始,当$validate()返回false时,将值ng-model设置为undefined(此处为docs )
要防止此行为,请将allowInvalidproperty属性设置ngModelOptions为true,如下所示:
ng-model-options="{allowInvalid: true}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |