1

我创建了一个包含 textarea 和 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

0

您需要在单击事件之后应用范围。

click: function (score, evt) {
    scope.feedbackDetails.score=score;
    ctrl.$setValidity('ngRaty',true);
    scope.$apply();
}
于 2014-09-28T11:36:33.497 回答