我们使用$资源对我们的服务器执行REST调用,但是人们倾向于双击启动调用的按钮。 我已经实现了一个简单的锁定机制,通过在初始化资源调用时设置锁定,并在它触发之前检查它是否被锁定,但不知何故人们仍设法触发多个调用。
if (lock === false) {
lock = true;
myService.mycall({ key: value },
function (result) {
..some code...
lock = false;
},
function (result) {
..some code..
lock = false;
});
有没有办法以某种方式以更好的方式锁定它?
答案 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动作通过回调异步执行。在服务器返回之前,执行会继续解锁。
尝试在资源回调函数中解锁