2

Angular を使用して属性 (または少なくともその値) を削除するにはどうすればよいですか? 具体的には、ng-clickイベントがあるとしましょう。これを一度だけ起動したいのですが、これを行う最も簡単な方法は、ng-clickイベントで「自己破壊」を行うことだと思います。の線に沿った何か

elementClicked = function(){
    //do work
    element.ngClick=null;

}
4

1 に答える 1

4

ng-click 属性の削除は機能しません。これは、属性を削除した後もクリック イベント リスナーが存在するためです。ng-click バインディングを null に設定する必要があります。

クリックワンスディレクティブを作成しました。要素のクリック イベントをリッスンし、最初に ng-click バインディングを実行してから、それを削除します。

.directive('clickOnce', function() {
  return {
    scope: {
      'ngClick': '&'
    },
    link: function(scope, element) {
      element.bind('click', function() {
        if (scope.ngClick) {
          scope.ngClick();
          scope.ngClick = null;
        }
      });
    }
  }
});

マークアップは次のとおりです。

<button click-once ng-click="doThis()>my button<button>

ここにjsFiddleがあります。

于 2014-11-13T14:52:20.120 に答える