2015-07-30 1 views
0

У меня есть текстовое поле, и если я нажимаю кнопку «Ввод», мне нужно отправить данные на сервер, но если вы быстро нажмете «Enter» несколько раз, «addNewCommentFactory .addComment "отправлять данные несколько раз. Как я могу отправить только один запрос (если бы быстро нажимала кнопку несколько раз). Возможно, я должен использовать задержку, прежде чем отправлять вторую. Например, если время между нажатиями кнопки меньше 1 секунды и следующий комментарий == предыдущий комментарий - сделайте что-нибудь. Помоги пожалуйста.AngularJS Как отправить данные только один раз (быстро нажмите)

$scope.sendComment = function(event, press){ 
 

 
    if(event.keyCode === 13 || press){ 
 
    
 
    if ($scope.new_comment && $scope.new_comment.length > 0) { 
 

 
addNewCommentFactory.addComment($scope.large, $scope.new_comment).then(function(obj){ 
 
      $scope.new_comment = null; 
 

 
       $timeout(function() { event.target.blur() }, 10, false); 
 

 
     }); 
 
     
 
    } 
 
    } 
 
}
<textarea placeholder="Type a message here" ng-model="new_comment" ng-keydown="sendComment($event)"></textarea>

ответ

1

Просто отключить кнопку, когда вы обрабатываете AddComment.

$scope.buttonDisabled = false; 
$scope.sendComment = function(event, press){ 

    if(event.keyCode === 13 || press){ 

    if ($scope.new_comment && $scope.new_comment.length > 0) { 

$scope.buttonDisabled = true; 
addNewCommentFactory.addComment($scope.large, $scope.new_comment).then(function(obj){ 
      $scope.new_comment = null; 
      $scope.buttonDisabled = false; 
       $timeout(function() { event.target.blur() }, 10, false); 

     }, function(){ $scope.buttonDisabled=false; }); 
    } 
    } 
} 

И в поле зрения,

<button ng-disabled="buttonDisabled" /> 
Смежные вопросы