2

我有一个标志按钮,当用户点击时,标志着讨论,之后标志按钮被文本'成功标志'取代。目前,我在点击标志按钮后无法禁用ng-click。 ng-click对于文本'已成功标记'仍然存在,我想阻止点击此文本以防止在标记相同讨论时发生错误。如何在ng-if ng-switch语句内点击后禁用ng-click?

HTML:

<div ng-if="canFlag(discussion)"> 
    <div ng-switch="isFlagging" 
     ng-disabled="button_clicked" 
     ng-click="do_something()" 
     id="flag{{discussion.id}}" 
     title="{{'flag as inappropriate'}}" 
     robo-confirm="{'Are you sure you want to flag this?'}" 
     class="feedActionBtn"> 

     <i ng-switch-when="false" 
      class="icon-flag"></i> 

     <div ng-switch-when="true" 
      translate translate-comment="success message"> 
      Successfully flagged</div> 
    </div> 
</div> 

JS:

$scope.isFlagging = false; 
$scope.button_clicked = false; 
    $scope.do_something = function() { 
     $scope.button_clicked = true; 
     this.isFlagging = true; 
    } 

通过添加惰性评估或通过防止传播,我也许能阻断do_something()方法被调用,但我我也希望鼠标光标仍然是一个指针,而不是变成“点击链接”鼠标图标,这可能吗? 看起来像鼠标按钮图像是一个css问题,我修正了

我也试过只是在ng-switch-when语句中添加ng-click语句,如下图,但点击后isFlagging仍然是false我没有得到成功的文本:

<div ng-switch-when="false" 
    ng-click="do_something()" 
    id="flag{{discussion.id}}" 
    title="{{'flag as inappropriate'}}" 
    robo-confirm="{'Are you sure you want to flag this?'}" 
    class="feedActionBtn"> 
    <i class="icon-flag"></i> 
</div> 
+0

的[上所有类型的元件的应用的特定条件下禁用纳克单击]可能的复制(http://stackoverflow.com/questions/23194477/disable-ng-click-on-certain-conditions-of-application-for-all-types-of-element) – Luca

+0

以前试过,不行的 – chonglawr

回答

1

您可以停止活动通过对“成功标记”分区添加ng-click="$event.stopPropagation()"冒泡。在这种情况下,点击事件不会到达父容器:

<div ng-click="$event.stopPropagation()" 
    ng-switch-when="true" 
    translate translate-comment="success message"> 
    Successfully flagged</div> 
+0

嘿嘿@dfsq,这工作,但有任何方法来防止鼠标图标变成单击链接图标时,这样做? – chonglawr

0

也许是一个简单的条件?

``$scope.do_something = function() { 
    if ($scope.button_clicked === true) { 
    return; 
    } 
    else { 
    $scope.button_clicked = true; 
    this.isFlagging = true; 
    } 
}`` 
+0

刚刚尝试过,不起作用:(,ng开关仍然拿起ng点击 – chonglawr

0

添加在NG-点击button_clicked是一种常见的图案

<div ng-if="canFlag(discussion)"> 
 
    <div ng-click="!button_clicked && do_something()" 
 
    id="flag{{discussion.id}}" 
 
    title="{{'flag as inappropriate'}}" 
 
    robo-confirm="{'Are you sure you want to flag this?'}" 
 
    class="feedActionBtn"> 
 
    <div ng-switch="isFlagging"> 
 
     <i ng-switch-when="false" class="icon-flag"></i> 
 

 
     <div ng-switch-when="true" 
 
     translate translate-comment="success message"> 
 
     Successfully flagged</div> 
 
    </div> 
 
    </div> 
 
</div>

+0

刚刚尝试过,不幸的是我不知道为什么点击按钮后,它没有注册ng开关条件,所以现在甚至没有看到成功的消息 – chonglawr

+0

尝试像我在前面的代码中那样移动ng开关 –