ボタンをクリックするとフォームが更新されます。
P粉523625080
2023-08-14 20:46:02
<p>2 つのボタン ラベルを持つ Angular のフォームがあります。ボタンは、<code>ng-click</code> でフォームを送信します。もう 1 つのボタンは、<code>ng-click</code> を使用したナビゲーション専用です。ただし、この 2 番目のボタンをクリックすると、AngularJS によってページが更新され、404 エラーがトリガーされます。関数にブレークポイントを設定すると、関数がトリガーされます。次のいずれかを行うと停止します。 </p>
<ol>
<li><code>ng-click</code> を削除すると、ボタンによってページが更新されなくなります。 </li>
<li>関数内のコードをコメントアウトしても、ページは更新されません。 </li>
<li>ボタンのラベルをアンカー ラベル (<code><a></code>) に変更し、<code>href=""</code> を追加しても更新されません。 。 </li>
</ol>
<p>後者が最も簡単な解決策のように思えますが、AngularJS が関数の後にページのリロードを引き起こすコードを実行するのはなぜですか?バグのようです。 </p>
<p>これは次の形式です: </p>
<pre class="brush:php;toolbar:false;"><form class="form-horizontal" name="myProfile" ng-switch-when="profile">
<フィールドセット>
<div class="コントロールグループ">
<label class="control-label" for="passwordButton">パスワード</label>
<div class="コントロール">
<button id="passwordButton" class="secondaryButton" ng-click="showChangePassword()">変更</button>
</div>
</div>
<div class="buttonBar">
<button id="saveProfileButton" class="primaryButton" ng-click="saveUser()">保存</button>
</div>
</フィールドセット>
</form></pre>
<p>これはコントローラー メソッドです: </p>
<pre class="brush:php;toolbar:false;">$scope.showChangePassword = function() {
$scope.selectedLink = "パスワード変更";
};</pre>
<p><br /></p>
デフォルトのハンドラーをブロックしてみてください:
html:
リーリーjs:
リーリーW3C 仕様 を見ると、送信したくないボタン要素に type='button'
記載されている場所には特別な注意を払う必要がありますをマークすることを試すのは明白なようです。 。