我有一个Angular的表单,里面有两个按钮标签.一个按钮在ng-click上提交表单.另一个按钮纯粹用于使用ng-click的导航.然而,当点击第二个按钮时,AngularJS会导致页面刷新,从而触发404.我在函数中删除了一个断点,它正在触发我的函数.如果我执行以下任一操作,它将停止:

  1. 如果我go 掉ng-click,该按钮不会导致页面刷新.
  2. 如果我注释掉函数中的代码,它不会导致页面刷新.
  3. 如果我将按钮标签更改为带有href=""的锚定标签(<a>),那么它不会导致刷新.

后者似乎是最简单的解决方法,但是为什么AngularJS会在我的函数之后运行任何导致页面重新加载的代码呢?看起来像是个窃听器.

以下是表格:

<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>

以下是控制器方法:

$scope.showChangePassword = function() {
  $scope.selectedLink = "changePassword";
};

推荐答案

如果您看一下这W3C specification个,似乎最明显的try 就是在您不想让按钮元素提交时用type='button'标记它们.

特别要注意的是它说的地方

未指定类型属性的按钮元素与类型属性设置为"提交"的按钮元素表示相同的内容

Javascript相关问答推荐

复合密钥查找在mongoDB中未按预期工作

验证嵌套 colored颜色 代码的结果

二维数组,过滤并返回带有索引而不是值的新数组

将音频记录从js发送到activx-web服务器以保存到磁盘

d3可排序表标题行中有收件箱--如何使收件箱不触发排序?

将json数组项转换为js中的扁平

没有输出到带有chrome.Devtools扩展的控制台

Angular material 拖放堆叠的牌副,悬停时自动展开&

在grafana情节,避免冲突的情节和传说

如何将react—flanet map添加到remixjs应用程序

为什么useState触发具有相同值的呈现

优化Google Sheet脚本以将下拉菜单和公式添加到多行

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

确保函数签名中的类型安全:匹配值

Use Location位置成员在HashRouter内为空

如果一个字符串前面有点、空格或无字符串,后面有空格、连字符或无字符串,则匹配正则表达式

是否可以将Select()和Sample()与Mongoose结合使用?

使用自动识别发出信号(&Q)

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?