debounce 不适用于 Angular 中的 keyup 事件

2024-01-13

我有一个text box输入一些文本来搜索记录。我在用data-ng-model-options="{ debounce: 1000 }" with keyup event, data-ng-model-options"工作正常,但我想解雇keyup事件之后debounce持续时间。 现在keyup事件在之前立即触发debounce duration。可能是我做错了什么。

这是我的HTML

<input type="text" id="focusOnMe" placeholder="Search..."/ data-ng-keyup="loadSearchResult($event)" data-ng-model="searchText" ng-model-options="{ debounce: 1000 }">

这是我的Keyup event action

$scope.loadSearchResult = function(event) {
  $rootScope.hideSearchResult = true;
  $rootScope.showLoading = true;
  var searchText = $scope.searchText.trim();
  if (searchText.length > 0) {
    $http({
      method: 'POST',
      url: '/secure/search',
      data: {
        searchText: searchText,
        peopleFlag: checkboxValueForPeopleSearch,
        colonyFlag: checkboxValueForColonySearch
      }
    }).success(function(data) {
      console.log(data);
      if (data !== undefined || data !== null) {
        $timeout(function() {
          $rootScope.hideSearchResult = false;
          $rootScope.showLoading = false;

          $scope.allSearchResult = {
            "bookmarks": data.bookmarks,
            "people": data.people,
            "colonies": data.colonies
          };
        }, 300);
      } else {
        $rootScope.showLoading = false;
        commonNotification($rootScope, false, true, true, 'something went wrong!');
        $timeout(function() {
          $rootScope.newStatus = false;

        }, 2000);
      }

    }).error(function(err) {

    });
  } else {
    $rootScope.hideSearchResult = true;
    $rootScope.showLoading = false;
  }

};

抱歉,代码依赖于更多文件,所以我没有plunker example

任何建议都会对我有帮助。

谢谢


Debounce 不会影响 keyup 事件。它只会延迟模型($scope)变量的分配。因此,您的 keyup 事件会立即触发,并且 loadSearchResult 在您希望之前运行。

要解决这个问题,您可以添加一个与 $scope.searchText 绑定的监视。

$scope.$watch('searchText', function (newValue) {
  loadSearchResult(newValue);
});

超级简单且代码干净,因为我们正在使用单一事实来源 https://en.wikipedia.org/wiki/Single_source_of_truth($范围)。

注意:我省略了事件对象,因为您没有使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

debounce 不适用于 Angular 中的 keyup 事件 的相关文章

随机推荐

  • 如何使用 hibernate 标准调用 postgres 函数

    我使用 hibernate 标准获取排序结果 生成以下 sql select from mytable order by name asc 这就是我使用休眠标准执行此操作的方法 criteria addOrder Order asc nam
  • 在测试阶段使用替代 Maven 配置文件

    我正在尝试从 Appfuse 原型开始构建一个应用程序 但我遇到了一些奇怪的问题 这一次 我想使用 hsqldb 进行自动化单元测试和集成测试 并使用 mysql 数据库进行手动测试 以便我可以在需要时轻松操作数据 因此在测试过程中自动切换
  • 从编辑控件获取文本

    我试过这个 int editlength int buttonid 3324 id to button the numbers dont mean anything int editid 5652 id to edit LPTSTR edi
  • 抓取域列表的登陆页面[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个相当长的网站列表 我想下载
  • 切片神奇地更新

    我正在尝试编写一个程序来查找二叉树中的所有根到叶路径 其中每个路径的总和等于给定的总和 以下是我想出的代码 package main import fmt type TreeNode struct Val int Left TreeNode
  • 如何在VS中调试appdomain返回值

    我的 C 程序使用多个应用程序域来加载 卸载程序集 我在第二个应用程序域中的程序集返回一个继承 MarshalByRefObject 的对象 我现在的问题是 Visual Studio 告诉我它无法显示有关它的信息 此上下文中不支持获取透明
  • 在没有 Spring Boot 应用程序主类的项目中测试 Spring Data Repository

    我有一个小项目 不包含运行 Spring Boot 应用程序的类 在该课程中 我只有一些配置和一些存储库 我想在小项目中测试这些存储库 为此 我有以下几点 SpringBootTest DataJpaTest public class Ta
  • Vim html.erb 片段? snipMate 需要 vim 提示

    当我在 html erb 文件中时 我没有得到 snipMate 片段 我想要 HTML 和 Ruby 或者只需要 HTML 我该怎么做 我需要写一组片段吗 如果是这样 是否有一种方法可以提取现有的片段而不复制它们 有没有办法告诉vim在看
  • 禁用特定 Go-Gin 路由的请求日志记录

    我有很多路线 从杜松子酒开始gin Default 默认情况下启用所有路由的日志记录和恢复 但只有一条路线 即 health 每 5 秒就会 ping 一次 在不更改大量代码的情况下禁用该路由的请求日志记录的直接方法是什么 func mai
  • Karate DSL Framework 是否具有执行负载测试的能力

    目前 我们已经使用 Karate 框架自动化了所有的 Web 服务 这非常酷 我们有什么方法可以使用这个工具进行负载测试吗 示例 当我注册会员 1000 次时给出 那么平均响应时间应该是2 7毫秒 我是空手道的开发者 很高兴听到这个反馈 谢
  • Atom Shell 中的跨域 Ajax 调用

    我们正在与 Atom Shell 目前称为electron https github com atom electron 将 Web 应用程序包装为桌面应用程序 并且由于 CORS 限制而无法进行跨域 ajax 调用 我们也尝试过nw js
  • 迭代 mat-table Angular 中的数据源

    我在通过 dataSource 进行迭代时遇到问题 其中我有 mat table 的数据 div class my item div span class skuska span class mat subheading 2 element
  • 在服务中使用哪个上下文?

    我想调用其他需要 Context 作为输入参数的类中的方法 但我在服务中有 3 种可能性 getApplicationContext getBaseContext getApplication 用在哪一个ScreenService whic
  • .htaccess URL 重定向

    我怎样才能重定向http domain com blog index php weblog rss 2 0 http domain com blog index php weblog rss 2 0 to http www domain c
  • 如何在使用 Boost C++ 编写的 php Web 应用程序中读取地图(在共享区域中)?

    我在共享区域中使用 C Boost 库编写了一张映射 键 值 void CreateIndexMap shared memory object remove Getsharedmemoryregion managed shared memo
  • Windows Phone 7 TextBlock TextWrapping 在列表框中不受支持

    我有一个列表框定义为
  • Woocommerce 结账页面中的自定义统一费率描述文本

    我在运输区域内设置了两种统一费率运输方式 结帐时这两种运输方式都可用 我想在每个统一费率运输选项下显示文本说明 WooCommerce 中似乎没有任何选项可以执行此操作 我已经尝试过以下代码 但不用说它不起作用 add filter woo
  • 明白ES6中数组的区别了吗?

    所以我有两个数组 const allLanguages ES EN DE const usedLanguages id 1 lang EN 生成新数组的最快方法是什么 这两者之间有什么区别 在老式的 JavaScript 中 你必须在另一个
  • Android 中的图像视图上的文本叠加

    我正在尝试将文本视图覆盖在图像视图上 像这样的东西 有人可以帮我解决代码吗 将TextView和ImageView包裹到FrameLayout中 将TextView放在FrameLayout中ImageView之后 然后 将 FrameLa
  • debounce 不适用于 Angular 中的 keyup 事件

    我有一个text box输入一些文本来搜索记录 我在用data ng model options debounce 1000 with keyup event data ng model options 工作正常 但我想解雇keyup事件之