【问题标题】:AngularJS - How to ignore debounce when submitting form?AngularJS - 提交表单时如何忽略去抖动?
【发布时间】:2016-01-15 10:09:03
【问题描述】:

我有一个表单,当第一个字段更新时,它会更新另一个字段。另一个字段在更改事件延迟一段时间后更新,如ng-model-options 属性中的debounce 条目所指定。

我的问题是我希望在提交表单时尽快更新另一个字段(即延迟为 0),包括在第一个字段中键入时按下 Enter 键。

目前,当快速键入并按 Enter 时,由于 change 延迟,并且尽管我尝试使用 submit 延迟,重复的字段不会以最新值提交。

在提交表单之前按下 Enter 键时,如何尽快更新重复的字段值?

<html ng-app>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  </head>
  <body>
    
    <form action="" method="POST">
      <div>
        <label>Name:</label>
        <input
          type="text"
          ng-model="yourName"
          ng-model-options="{ updateOn: 'submit default', debounce: { submit: 0, default: 2000 } }"
          placeholder="Enter a name here"
        >
      </div>
      
      <hr>
      
      <div>
        <label>Duplicated field:</label>
        <input name="duplicatedField" type="text" ng-value="yourName">
      </div>

      <button type="submit">Submit</button>
    </form>
  </body>
</html>

【问题讨论】:

    标签: angularjs forms


    【解决方案1】:

    看看https://docs.angularjs.org/api/ng/directive/ngSubmit。它应该补偿您在 ng-model 上的任何反跳。

    您也可以直接提交您的姓名作为帖子的另一部分。还是重复字段在更新时与 yourName 有不同的数据?这样,重复的字段只是为了显示在前面,您应该始终提交正确的 yourName。

    【讨论】:

    • 感谢您的回答。我不知道我可以用 ngSubmit 做什么...在 form 标签上的 ngSubmit 指令中使用的表达式是什么?与我的实际需求相比,我的示例过于简化(但确实以简单的方式显示了我的问题),这就是我不直接提交 yourName 的原因。
    • 目前您的 POST 工作如何?您的控制器中是否有您正在调用的函数?理想情况下,您将在控制器中创建一个处理您的帖子的函数,并将该方法的名称放在 ngSummit 中。类似于 -
      。这有意义吗?
    • 我的 POST 工作非常简单,它是一个纯 HTML 的,所以我没有 AngularJS 控制器处理的 ngSubmit 指令。也许我应该试试这个,看看它是否在提交表单之前神奇地更新了数据。我找到了解决我的问题的其他方法,所以我想知道是否关闭此问题,但了解如何在提交事件上强制刷新绑定可能很有用。
    • 啊,好吧,我不知道以这种方式处理 POST。如果需要,请关闭问题。无论如何,Ng-submit 等都在 Angular 网站上。
    猜你喜欢
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多