Как я могу удалить атрибут из углового элемента?

Как удалить атрибут (или хотя бы его значение) с помощью Angular? В частности, скажем, у меня есть ng-click событие. Я хочу, чтобы это даже срабатывало только один раз, и я думаю, что самый простой способ сделать это - это самоуничтожиться в событии ng-click. Нечто подобное

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

}

1 ответ

Решение

Удаление атрибута ng-click не будет работать, потому что прослушиватель события click будет оставаться там после удаления атрибута. Вам необходимо установить привязку ng-click к нулю.

Я создал директиву " нажми один раз". Он прослушивает событие нажатия элемента и впервые выполняет привязку 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.

Другие вопросы по тегам