1

テキストエリアと JQuery Raty プラグインを含むフォームを作成しました。Raty プラグインは、ユーザーが実際に評価したことを確認するカスタム フォーム検証を含む Angular ディレクティブを使用して追加されます。私のフォーム送信ボタンは、フォームの $valid 状態に依存しています。

問題は、レートの有効性を設定した後に form.$valid 値が更新されないことです。その値を更新するには、フォームで別のユーザー アクションが必要です。

たとえば、ユーザーがテキスト エリアにレビューを入力し、その後も評価済みボタンが無効になっている場合、レビュー テキスト エリアに別の文字を入力した後にのみ、ボタンの状態が更新されます。

form.$valid のレート有効性の変更をすぐに適用するにはどうすればよいですか?

ありがとう!

私のコード:

.directive("ngRaty", function() {
    return {
        require: 'ngModel',
        restrict: 'E',
        link: function(scope, elem, attrs,ctrl) {
            ctrl.$setValidity('ngRaty',false);
            $(elem).raty({score: attrs.score,
                          number: attrs.number,
                          path: '/resources/img/',
                          hints: ['Awaful', 'Bad', 'Ok', 'Good', 'Excellent'],
                          click: function (score, evt) {
                              scope.feedbackDetails.score=score;
                              ctrl.$setValidity('ngRaty',true);
                          }
                }
            )

        }
    }
});


<form name="feedbackForm" class="form-horizontal" novalidate>
    <ng-raty ng-model="feedbackDetails.score" required></ng-raty>
    <textarea name="review" ng-model="feedbackDetails.review" required></textarea>
    <button ng-click="submitFeedback(feedbackDetails)" ng-disabled="!feedbackForm.$valid">Submit</button>
</form>
4

1 に答える 1