2016-03-04 80 views
0

在我的角度應用程序中,我有一些調用REST服務的按鈕。Angularjs按鈕加載狀態並在調用服務器休息時禁用

有時,Rest服務需要很長時間才能回覆。爲了防止用戶接受服務應答之前單擊一次,我想禁用按鈕和他的值更改爲「載入中...

我想要做的一樣,只爲所有按鈕其值等於 '搜索' 或 '重新開張'

例: enter image description here

代碼:

<input type="submit" class="btn" ng-click="relaunch()" ng-value="Relaunch"/> 

$scope.relaunch= function(){ 
    RelaunchService.relaunch().then(function(data){ 
     // server response 
     }) 
}; 

爲此,我想創建一個指令。但我不知道該怎麼辦呢:-(

PS:需要注意的是,用戶可以在同一時間在幾個不同的按鈕,點擊

+0

請向我們展示您的代碼。 –

+0

@AlessioCantarella添加代碼 –

回答

1

您可以使用ng-disabled

語法是

<INPUT 
ng-disabled="expression"> 
    ... 
</INPUT> 


所以你的情況,你可以做到這一點作爲

<input type="submit" class="btn" ng-disabled="btnDisabled" ng-click="relaunch()" ng-value="Relaunch"/> 
$scope.btnDisabled=false; 
$scope.relaunch= function(){ 
    $scope.btnDisabled=true; 
    RelaunchService.relaunch().then(function(data){ 
     // server response 

    }).finally(function(){ 
     $scope.btnDisabled=false; 
    }) 
}; 
+0

您可能最好使用'finally()'而不是'then()'重新啓用按鈕 –

+0

謝謝您的回答。我只想使用一個指令。因爲我有很多按鈕,所以在這種情況下需要修改很多代碼 –