2014-03-13 126 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; 
    }); 
}