Angular.js: Clicar no elemento filho aciona seu próprio ng-click e o pai também

Criado em 3 dez. 2013  ·  9Comentários  ·  Fonte: angular/angular.js

Se eu tiver um <div> com um ng-click e um <button> dentro com um ng-click separado, clicar no botão irá disparar ambos ng-click manipuladores.

Eu encontrei o antigo PR de Igor para isso (# 31!), Mas parece que os stopPropagation() ele adicionou foram perdidos em algum lugar no meio.

Tentei dividir ao meio, mas descobri que não está funcionando em 1.2.3, master, 1.1.5, 1.1.3, 1.0.6 ou 1.0.3. Eu tentei dividir entre o master e o commit de Igor no PR acima, mas as alterações ficaram tão antigas (0.10.x) que meu aplicativo de teste não funcionou de jeito nenhum.

Caso de teste simples para reproduzir isso no Plunkr .

Comentários muito úteis

Você só precisa adicionar o código $ event.stopPropagation () no evento Child div on click

Todos 9 comentários

Parece que a chamada stopPropagation() foi removida por 1752c8c44a7058e974ef208e583683eac8817789.

@tbosch , decida se isso funciona conforme o esperado ou se há algo que podemos fazer para lidar com esta situação.

não podemos interromper a propagação por padrão porque não haveria maneira de interrompê-la.

Existem casos de uso válidos para não interromper a propagação.
Parar a propagação tornaria esses casos de uso não mais possíveis, pois não podemos parar a propagação.

Por exemplo, caso de uso:
Lista de itens com um botão "publicar". Ao clicar em um desses itens, o item deve ser destacado como o item selecionado. Este também deve ser o caso se o botão "publicar" de um item não selecionado for pressionado.

No momento, isso é possível, consulte este punk: http://plnkr.co/edit/jVIovi0L9Hgo1Bl9t72O?p=preview

Fechar isso porque funciona conforme o esperado.

Você só precisa adicionar o código $ event.stopPropagation () no evento Child div on click

@gomteshhatgine no celular ou iônico não funcionou. faz com que o clique do filho não seja acionado também.

@gomteshhatgine no meu caso, ele ainda é acionado como desempenho dos pais. Você tem outra abordagem?

@maceonrails Não sei sobre celular, não tentei

@xenogew deve funcionar
Você pode compartilhar um trecho de código?

@gomteshhatgine obrigado. funcionou.

Não funciona mais

Esta página foi útil?
0 / 5 - 0 avaliações