テキストエリアと 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>