搜索

首页  >  问答  >  正文

点击按钮将引发表单刷新的行为

<p>我在Angular中有一个表单,其中有两个按钮标签。一个按钮在<code>ng-click</code>上提交表单。另一个按钮纯粹用于使用<code>ng-click</code>进行导航。然而,当点击这个第二个按钮时,AngularJS会导致页面刷新,触发404错误。我在函数中设置了一个断点,它会触发我的函数。如果我执行以下任何操作,它就会停止:</p> <ol> <li>如果我移除<code>ng-click</code>,按钮不会导致页面刷新。</li> <li>如果我在函数中注释掉代码,它不会导致页面刷新。</li> <li>如果我将按钮标签更改为锚标签(<code><a></code>)并添加<code>href=""</code>,它就不会导致刷新。</li> </ol> <p>后者似乎是最简单的解决方法,但为什么AngularJS在我的函数之后运行任何导致页面重新加载的代码?看起来像是一个bug。</p> <p>这是表单:</p> <pre class="brush:php;toolbar:false;"><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></pre> <p>这是控制器方法:</p> <pre class="brush:php;toolbar:false;">$scope.showChangePassword = function() { $scope.selectedLink = "changePassword"; };</pre> <p><br /></p>
P粉523625080P粉523625080469 天前470

全部回复(2)我来回复

  • P粉637866931

    P粉6378669312023-08-15 11:55:54

    你可以尝试阻止默认处理程序:

    html:

    <button ng-click="saveUser($event)">

    js:

    $scope.saveUser = function (event) {
      event.preventDefault();
      // 你的代码
    }

    回复
    0
  • P粉821274260

    P粉8212742602023-08-15 11:39:51

    如果你查看W3C规范,似乎显而易见的尝试是在你不想要提交的按钮元素上标记type='button'

    特别要注意的是它所说的位置

    回复
    0
  • 取消回复