1

我有一个验证自定义表单,我在这样的选择和文本区域中使用validate-message-character="{{compose.limitCharacter - compose.message.length}}"

            <form class="form-horizontal" role="form" name="composeForm" >

            <select ng-change="limitComposeCharacter()" ng-selected="compose.profile" 
             ng-model="compose.profile" ng-options="userId in profiles" name="profile" 
             validate-message-character="{{compose.limitCharacter - compose.message.length}}" required>
            </select>

               number Character: {{compose.limitCharacter - compose.message.length}}

            <textarea class="form-control" ng-model="compose.message" name="message" 
    validate-message-character="{{compose.limitCharacter - compose.message.length}}" 
required></textarea>
              Form validity: {{composeForm.$valid}}

我有这样的事情:

  • 1° 选择用户有 compose.limitCharacter = 100
  • 2° 选择用户有 compose.limitCharacter = 200 等。

这是我检查数字字符的指令 > 0

angular.module('App')
  .directive('validateMessageCharacter', function () {
    return {
      require: 'ngModel',
      link: function postLink(scope, element, attrs, c) {
        scope.$watch(attrs.ngModel, function() {
            console.log(attrs.validateMessageCharacter);
            if(attrs.validateMessageCharacter < 0)
            {
                c.$setValidity('maxCharacter', false);
                c.$invalid = true;
            }else{
                c.$setValidity('maxCharacter', true);
                c.$invalid = false;
            }

        });
      }
    };
  });

当更改选择而不更改 textarea 一些建议时,它不能正常工作?

4

1 回答 1

2

首先,使用 angular google 小组的建议,我将 scope.$watch 更改为 attr.$observe。其次,它仅在输入文本后才验证的原因是文本区域是必填字段。您的代码在这里工作: http ://plnkr.co/edit/YvsuLoHzX9eqb7FhDgXA?p=preview

于 2014-04-08T14:04:23.717 回答