2014-03-13 49 views
1

我們使用$資源對我們的服務器執行REST調用,但人們往往會雙擊啓動調用的按鈕。 我已經實現了一個簡單的鎖定機制,通過在對資源的調用進行初始化時設置一個鎖,並檢查它在被觸發之前是否鎖定,但不知何故人們仍然設法觸發多個調用。

if (lock === false) { 
    lock = true; 

    myService.mycall({ key: value }, 
       function (result) { 
        ..some code... 
        lock = false; 
       }, 
       function (result) { 
        ..some code.. 
        lock = false; 
    }); 

有沒有辦法以某種方式鎖定在一個更好的方式嗎?

回答

0

$ resource操作是通過回調異步執行的。在服務器返回之前,執行繼續解鎖。

嘗試在資源回調函數解鎖

+0

對不起,我沒有做那個可能已經足夠清楚了,解鎖在回調中設置爲200和錯誤情況,並在控制器初始化時...查看我更新的問題 – Maarten

1

我用所有輸入NG-禁用,當我做任何Ajax調用,以確保正是這種情況不會發生:

<button ng-click="saveChanges()" 
    ng-disabled="pageLoad" 
    class="save">Save</button> 

$scope.saveChanges = function() { 
    $scope.pageLoad = true; 
    myResource.save($scope.data) 
    .success(function(response) { 
     $scope.pageLoad = false; 
    }); 
}