2017-10-13 367 views
0

我有一个删除img,并点击它将进行api调用并删除记录,但双击它正在进行多个api调用。我尝试禁用双击使用ng-dblclick =“返回false;”但没用。有人可以帮助我如何禁用使用角度js双击img标签?如何禁用双击img标签

PS:我已经看到这种做法正在div标签

感谢

+0

禁用点击,直到你的记录被删除。 –

+2

三重点击呢?五次点击?您需要在该图像上设置一个标志,以忽略除第一次点击之外的所有标志。 – tadman

+0

@NikolajDamLarsen我发现即使ng-disabled也不起作用。 –

回答

1

这里是你如何能避免多个API调用的例子。它可能看起来不同于你的代码,但由于你没有提供任何代码,这是我能做的最好的。

在您的控制器中,您将有一个变量,您在第一次点击时设置为true,并在API调用返回响应时设置为false。每次执行API调用的函数时,都要检查这个变量是否为真。如果是这样,您只需在再次进行API调用之前返回即可。这是代码(我在这里跳过最佳实践,以保持样本最小)

angular.module('app').controller('myController', function($http){ 
    var ctrl = this; 
    ctrl.isDeleting = false; 

    ctrl.deleteRecord = function(id){ 
     if(ctrl.isDeleting){ 
      return; 
     } 

     ctrl.isDeleting = true; 
     $http.delete('[your_api_url]/' + id).finally(function(){ 
      ctrl.isDeleting = false; 
     }); 
    }; 
}); 

然后你的HTML应该是这样的:

<img src="images/delete.png" ng-click="$ctrl.deleteRecord(id)" ng-class="{'img-disabled': $ctrl.isDeleting}" /> 

,并添加一些CSS视觉反馈给用户:

.img-disabled { 
    cursor: default; 
    opacity: 0.5; 
} 

就是这样。

重申一下,我不知道你的代码是怎么样的,所以我已经做出了一些假设,你在应用这个解决方案时必须考虑到。

+0

我遵循相同的逻辑,但问题是我使用标记,所以我看到ng-disabled在标记上不起作用。 –

+0

“ng-disabled”不是我样本的重要组成部分。这仅仅是对用户的视觉反馈。即使没有它,使用上面的代码你的API不会被调用两次。你可以用'ng-class =“{'img-disabled':$ ctrl.isDeleting}”'做类似的img标签,并让一些css使img看起来被禁用。我已经从示例中删除了'ng-disabled',以避免从我的答案的本质中分心。 –

+0

非常感谢Nikolaj,它在这种方法下运作良好。 –

1

最简单的办法是:

<img src="Tulips.png" alt="Add" height="25" width="25" ng-disabled="!isEnabled" ng-click="!isEnabled"></img> 

var app = angular.module('main', []). 
controller('DemoCtrl', function($scope, $filter) { 
$scope.isEnabled=true; 
});