1

私は検証カスタム フォームを持っています

            <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° Select User has compose.limitCharacter = 200 etc.

これは、数値をチェックするための私の指令です 文字が > 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;
            }

        });
      }
    };
  });

テキストエリアを変更せずに選択を変更すると、適切に機能しません。アドバイスはありますか?

4

1 に答える 1

2

まず、angular google グループからのアドバイスを使用して、scope.$watch を attr.$observe に変更しました。第 2 に、テキストを入力した後にのみ検証した理由は、テキスト領域が必須フィールドであるためです。あなたのコードはここで動作します: http://plnkr.co/edit/YvsuLoHzX9eqb7FhDgXA?p=preview

于 2014-04-08T14:04:23.717 に答える