Mam formularz w Angular, który zawiera dwa znaczniki przycisków. Jeden przycisk przesyła formularz na ng-click
. Drugi przycisk służy wyłącznie do nawigacji ng-click
. Jednak po kliknięciu tego drugiego przycisku AngularJS powoduje odświeżenie strony, które powoduje 404. Upuściłem punkt przerwania w funkcji i uruchamia moją funkcję. Jeśli wykonam jedną z poniższych czynności, przestanie to działać:
- Jeśli usunę przycisk
ng-click
, przycisk nie spowoduje odświeżenia strony. - Jeśli skomentuję kod w funkcji, nie spowoduje to odświeżenia strony.
- Jeśli zmienię tag przycisku na tag anchor (
<a>
) za pomocąhref=""
, nie spowoduje to odświeżenia.
To ostatnie wydaje się być najprostszym obejściem, ale dlaczego AngularJS uruchamia nawet dowolny kod po mojej funkcji, który powoduje przeładowanie strony? Wygląda na błąd.
Oto formularz:
<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>
Oto metoda kontrolera:
$scope.showChangePassword = function() {
$scope.selectedLink = "changePassword";
};