122 votes

href prévaut sur ng-click dans Angular.js

Lorsque les deux attributs, href et ng-click, sont définis :

<a href="#" ng-click="logout()">Sign out</a>

le site href a la priorité sur l'attribut ng-click.

Je cherche un moyen d'augmenter la priorité de ng-click.

href est nécessaire pour Twitter Bootstrap, je ne peux pas le supprimer.

245voto

sketchfemme Points 3377

Cet exemple tiré du site de documentation d'Angular le fait simplement href sans même l'affecter à une chaîne vide :

[<a href ng-click="colors.splice($index, 1)">X</a>]

http://docs.angularjs.org/api/ng.directive:select

89voto

Vous pouvez simplement empêcher le comportement par défaut de l'événement de clic directement dans votre modèle.

<a href="#" ng-click="$event.preventDefault();logout()" />

Par le documentation angulaire ,

Les directives comme ngClick et ngFocus exposent un objet $event dans la portée de cette expression.

72voto

Mithu Points 443

Voici une autre solution :

<a href="" ng-click="logout()">Sign out</a>

Par exemple, il suffit de supprimer le # de l'attribut href.

36voto

Geoff Points 423

Vous devriez probablement utiliser une balise de bouton si vous n'avez pas besoin d'un uri.

28voto

mPrinC Points 619

Encore un indice. Si vous avez besoin d'une véritable URL (pour favoriser l'accessibilité du navigateur), vous pouvez procéder comme suit :

modèle :

<a ng-href="{{link}}" ng-click="$event.preventDefault(); linkClicked(link)">{{link}}</a>

directive :

$scope.linkClicked = function(link){
    // your code here
    $location.path(link);
};

De cette façon, votre code dans linkClicked() aura la possibilité de s'exécuter avant de naviguer vers le lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X