2

我有一个标记按钮,当用户单击时,标记讨论,然后标记按钮被替换为“成功标记”文本。目前,我在单击标志按钮后无法禁用 ng-click。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-click 添加到 ng-switch-when 语句中,如下所示,但是单击后,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>
4

3 回答 3

1

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

<div ng-click="$event.stopPropagation()"
     ng-switch-when="true" 
     translate translate-comment="success message">
    Successfully flagged</div>
于 2016-07-25T17:41:42.000 回答
0

也许是一个简单的条件?

``$scope.do_something = function() {
  if ($scope.button_clicked === true) {
     return;
  }
  else {
  $scope.button_clicked = true;
    this.isFlagging = true;
  }
}``
于 2016-07-25T17:44:17.810 回答
0

在 ng-click 中添加 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>

于 2016-07-25T20:26:36.073 回答