加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angularjs> 1.3 $validator导致modelValue未定义

发布时间:2020-12-17 07:08:50 所属栏目:安全 来源:网络整理
导读:我使用$validator编写自定义表单验证指令. 目前它看起来像这样: module.directive('tweetLength',function(URLDetector) { return { restrict: 'A',require: 'ngModel',link: function(scope,element,attrs,ctrl) { var allowedCharacters; allowedCharacte
我使用$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;
      };
    }
  };
});

它检查附加元素的模型的字符数,同时考虑链接缩短(因此ng-minlength和ng-maxlength不起作用).如果不满足要求,则返回false.问题是当它返回false时,modelValue变为未定义.我知道此时该值应存储在$$invalidModelValue中,但我仍然需要原始模型中的值,因为它在视图中的其他位置使用.

有没有办法阻止Angular移动它并使原始模型未定义?我知道这个问题可以在表单控制器中解决,但我不认为这是正确的方法,因为我想使用表单状态而不是某些外部变量来禁用表单提交按钮.在使用Angular表单验证时是否有其他方法可以解决此问题?

解决方法

从Angular v.1.3开始,当 $validate()返回false时,ng-model的值设置为undefined(docs here)

要防止此行为,请将allow0000的allowInvalid属性设置为true,如下所示:

ng-model-options="{allowInvalid: true}"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读