Angular.js: Щелчок по дочернему элементу запускает собственный ng-щелчок и родительский тоже

Созданный на 3 дек. 2013  ·  9Комментарии  ·  Источник: angular/angular.js

Если у меня есть <div> с ng-click а затем <button> внутри с отдельным ng-click , нажатие кнопки запустит оба ng-click обработчики.

Я нашел древний пиар Игоря для этого (№31!), Но кажется, что stopPropagation() он добавил, потерялись где-то посередине.

Я попытался разделить пополам, но обнаружил, что это не работает в 1.2.3, master, 1.1.5, 1.1.3, 1.0.6 или 1.0.3. Я попытался разделить коммит мастера и Игоря пополам в приведенном выше PR, но они настолько устарели (0.10.x), что мое тестовое приложение вообще не будет работать.

Простой тестовый пример для воспроизведения этого на Plunkr .

Самый полезный комментарий

Просто вам нужно добавить код $ event.stopPropagation () в дочерний div при событии щелчка

Все 9 Комментарий

Похоже, что вызов stopPropagation() был удален 1752c8c44a7058e974ef208e583683eac8817789.

@tbosch, пожалуйста, примите решение, работает ли это так, как ожидалось, или есть что-то, что мы можем сделать, чтобы справиться с этой ситуацией.

мы не можем остановить распространение по умолчанию, потому что не было бы возможности остановить его.

Есть допустимые варианты использования, чтобы не останавливать распространение.
Остановка распространения сделает эти варианты использования невозможными, поскольку мы не можем остановить распространение.

Например, вариант использования:
Список товаров с кнопкой «опубликовать». При нажатии на один из этих элементов он должен быть выделен как выбранный. Это также должно иметь место, если нажата кнопка «опубликовать» невыбранного элемента.

Прямо сейчас это возможно, посмотрите этот панк: http://plnkr.co/edit/jVIovi0L9Hgo1Bl9t72O?p=preview

Закрытие, поскольку оно работает, как ожидалось.

Просто вам нужно добавить код $ event.stopPropagation () в дочерний div при событии щелчка

@gomteshhatgine на мобильном или ионном устройстве не сработало. это делает дочерний ng-click не запускаемым.

@gomteshhatgine в моем случае он все еще запускается как родительский. У вас есть другой подход?

@maceonrails Не знаю о мобильных устройствах, которых не пробовал

@xenogew он должен работать
Не могли бы вы поделиться фрагментом кода?

@gomteshhatgine спасибо. это сработало.

Больше не работает

Была ли эта страница полезной?
0 / 5 - 0 рейтинги