2014-09-24 84 views
1

我創建了一個包含textarea和JQuery Raty插件的表單。 Raty插件使用Angular指令添加,其中包含一個自定義表單驗證,確保用戶實際評分。 我的表單提交按鈕取決於$有效狀態的形式。JQuery Raty和Angular - 添加表單驗證

問題是我設置了我的raty的有效性後,我的表單。$有效值沒有刷新 - 它在表單中需要另一個用戶操作來刷新該值。

例如如果用戶在文本區域中輸入了評論,並且在評級按鈕仍然被禁用之後,只有在他在評論文本區域按鈕狀態中輸入另一個字符後纔會刷新。

如何在表單上應用raty有效性更改$ $立即生效?

謝謝!

我的代碼:

.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> 

回答

0

您需要點擊事件後應用範圍。

click: function (score, evt) { 
    scope.feedbackDetails.score=score; 
    ctrl.$setValidity('ngRaty',true); 
    scope.$apply(); 
}