在angularjs中锁定$ resource调用

时间:2014-03-13 15:08:52

标签: angularjs locking

我们使用$资源对我们的服务器执行REST调用,但是人们倾向于双击启动调用的按钮。 我已经实现了一个简单的锁定机制,通过在初始化资源调用时设置锁定,并在它触发之前检查它是否被锁定,但不知何故人们仍设法触发多个调用。

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

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

有没有办法以某种方式以更好的方式锁定它?

2 个答案:

答案 0 :(得分:1)

当我执行任何ajax调用时,我对所有输入使用ng-disable以确保不会发生这种情况:

<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;
    });
}

答案 1 :(得分:0)

$ resource动作通过回调异步执行。在服务器返回之前,执行会继续解锁。

尝试在资源回调函数中解锁