J'ai un formulaire dans Angular qui contient deux balises de boutons. Un bouton soumet le formulaire sur ng-click
. L'autre bouton sert uniquement à la navigation en utilisant ng-click
. Cependant, lorsque ce deuxième bouton est cliqué, AngularJS provoque un rafraîchissement de la page, ce qui déclenche une erreur 404. J'ai déposé un point d'arrêt dans la fonction et il déclenche ma fonction. Si je fais l'une des choses suivantes, elle s'arrête :
- Si je retire le
ng-click
le bouton ne provoque pas de rafraîchissement de la page. - Si je commente le code dans la fonction, cela ne provoque pas de rafraîchissement de la page.
- Si je remplace la balise du bouton par une balise d'ancrage (
<a>
) avechref=""
alors il n'y a pas de rafraîchissement.
Cette dernière solution semble la plus simple, mais pourquoi AngularJS exécute-t-il un code après ma fonction qui provoque le rechargement de la page ? Cela ressemble à un bug.
Voici le formulaire :
<form class="form-horizontal" name="myProfile" ng-switch-when="profile">
<fieldset>
<div class="control-group">
<label class="control-label" for="passwordButton">Password</label>
<div class="controls">
<button id="passwordButton" class="secondaryButton" ng-click="showChangePassword()">Change</button>
</div>
</div>
<div class="buttonBar">
<button id="saveProfileButton" class="primaryButton" ng-click="saveUser()">Save</button>
</div>
</fieldset>
</form>
Voici la méthode du contrôleur :
$scope.showChangePassword = function() {
$scope.selectedLink = "changePassword";
};
0 votes
Voyez si c'est votre problème github.com/angular/angular.js/issues/1238 (Malheureusement, je ne connais pas assez bien github pour être capable de dire si cette correction est dans la version 1.0.1 ou non).
0 votes
Je l'ai vu, mais je ne change pas d'emplacement donc je ne pense pas que ça s'applique. À moins que cet autre bouton n'entraîne l'envoi du formulaire, mais il n'est pas défini comme un type d'envoi, et lorsque j'enlève le ng-click, le bouton n'envoie pas le formulaire.
0 votes
Ce serait formidable si vous pouviez fournir une démonstration fonctionnelle de ce problème. Peut-être en commençant par : Angular Plnkr
0 votes
Duplicata de stackoverflow.com/questions/932653/
0 votes
On dirait un doublon. stackoverflow.com/questions/16703215/
0 votes
C'est plutôt le lien que vous avez indiqué qui est en double. Vérifiez les dates. C'est antérieur à ce lien.