Angular: Empty Fiddle
http://angularjs.org/
HTML
<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<div ng-controller="MyCtrl">
<br>
<form name="msgForm">
<input type="text" ng-model="msg" ng-disabled="disableButton" ng-required="true"><br>
<button class="button button-small" ng-click="onTimeout()" ng-disabled="msgForm.$invalid || disableButton">Enviar</button>
</form>
</div>
JavaScript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope, $timeout) {
$scope.disableButton = false;
$scope.counter = 0;
//Simula uma requisição
$scope.onTimeout = function() {
//Assim que entrar na função seta como true
$scope.disableButton = true;
$scope.counter++;
mytimeout = $timeout($scope.onTimeout, 1000);
//Após o fim da simulaçã
if ($scope.counter >= 5) {
$timeout.cancel(mytimeout);
//Depois de terminar a requisição seta como false
$scope.disableButton = false;
$scope.counter = 0;
}
}
}