Cuando se definen los atributos href y ng-click:
<a href="#" ng-click="logout()">Sign out</a>
el href
atributo tiene prioridad sobre ng-click.
Estoy buscando una forma de aumentar la prioridad de ng-click.
href
es necesario para Twitter Bootstrap, no puedo eliminarlo.
Respuestas:
Probablemente debería usar una etiqueta de botón si no necesita un uri.
fuente
Este ejemplo del sitio de documentación angular simplemente lo hace
href
sin siquiera asignarlo a una cadena vacía:http://docs.angularjs.org/api/ng.directive:select
fuente
href="#"
) provoca una recarga de la página, que también es incorrecta.href=""
resuelve.<a href="javscript:void(0)" ng-click="logout()">Sign out</a>
también te servirá bienSimplemente puede evitar el comportamiento predeterminado del evento de clic directamente en su plantilla.
Según la documentación angular ,
fuente
Aquí hay otra solución:
es decir, simplemente elimine el # del atributo href
fuente
Solo una pista más. Si necesita una URL real (para admitir la accesibilidad del navegador), puede hacer lo siguiente:
modelo:
directiva:
De esta manera, su código en linkClicked () tendrá la oportunidad de ejecutarse antes de navegar al enlace
fuente
En Angular,
<a>
s son directivas . Como tal, si tiene un vacíohref
o nohref
, Angular llamaráevent.preventDefault
.De la fuente :
Aquí hay un plnkr que demuestra el
href
escenario que falta .fuente
Esto funcionó para mí en IE 9 y AngularJS v1.0.7:
¡Gracias al comentario de duckeggs por la solución de trabajo!
fuente
Hay tantas respuestas para esta pregunta aquí, pero parece que hay un poco de confusión sobre lo que realmente está sucediendo aquí.
Primero, tu premisa
Está Mal. Lo que realmente está sucediendo es que después de su clic, el evento de clic es manejado primero por angular (definido por la
ng-click
directiva en angular 1.xyclick
en angular 2.x +) y luego continúa propagándose (lo que eventualmente hace que el navegador navegue al URL definida conhref
atributo). (Consulte esto para obtener más información sobre la propagación de eventos en javascript).Si desea evitar esto, debe cancelar la propagación del evento utilizando el método de la interfaz del evento
preventDefault()
:(Esta es una funcionalidad pura de JavaScript y no tiene nada que ver con angular)
Ahora, esto ya resolverá su problema, pero esta no es la solución óptima. Angular, legítimamente, promueve el patrón MVC . Con esta solución, su plantilla html se mezcla con la lógica javascript. Debería tratar de evitar esto tanto como sea posible y poner su lógica en su controlador angular. Entonces una mejor manera sería
Y en su método logout ():
Ahora el evento de clic no llegará al navegador, por lo que no intentará cargar el enlace señalado
href
. (Sin embargo, tenga en cuenta que si el usuario hace clic con el botón derecho en el enlace y lo abre directamente, no habrá ningún evento de clic. En su lugar, cargará directamente la URL señalada por elhref
atributo).Respecto a los comentarios sobre el color del enlace visitado en los navegadores. Nuevamente, esto no tiene nada que ver con angular, si
href="..."
apunta a una URL visitada por su navegador de forma predeterminada, el color del enlace será diferente. Esto está controlado por CSS: Selector visitado , puede modificar su CSS para anular este comportamiento:PS1 :
Algunas respuestas sugieren usar:
href
es una directiva angular. Cuando su plantilla es procesada por angular, esta se convertirá aEsas dos formas son esencialmente las mismas.
fuente
Simplemente escriba ng-click antes de href .. funcionó para mí
fuente
No creo que debas eliminar "#" de href. Siguiendo trabajos con Angularjs 1.2.10
fuente
También puedes probar esto:
fuente
Agregaré para ti un ejemplo que me funciona y puedes cambiarlo como quieras.
Agrego el código de abajo dentro de mi controlador.
y para mi página de vista agrego el siguiente código.
fuente
¿Intentó redirigir dentro de la función de cierre de sesión? Por ejemplo, digamos que su función de cierre de sesión es la siguiente
Entonces puedes tener
fuente
Por favor, chequee esto
fuente
fuente
Esto funciona para mi
fuente