2

ユーザーがクリックしたときにディスカッションにフラグを立てるフラグ ボタンがあり、その後、フラグ ボタンは「フラグが付けられました」というテキストに置き換えられます。現在、フラグ ボタンをクリックした後に ng-click を無効にできません。'successfully flagged' というテキストの 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>
4

3 に答える 3

1

ng-click="$event.stopPropagation()""Successfully flagged" 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 に答える