当前位置: 首页 > 面试题库 >

我可以消除或抑制观看的声音吗 _lodash在AngularJS中使用?

乐正洲
2023-03-14
问题内容

我有以下代码监视<input>绑定到$ scope.id 的字段。每次输入字段值更改时,都会执行watch函数:

$scope.$watch("id", function (id) {

   // code that does something based on $scope.id

});

有没有一种方法可以对此设置超时或用_lodash进行反跳,以便在用户更改值时不会在每次按键时执行代码。

我想要的是延迟一秒钟,以便在用户停止键入一秒钟后,手表中的代码块就会运行。请注意,输入值可能随时更改。例如,如果值是“ 1”或“ 10”或“
1000”,则需要调用该函数。这类似于带有建议的搜索框在Google中的工作方式。如果用户输入999,则需要调用该函数。如果他删除了9,那么它就是99,那么我需要调用该函数。

我确实有_lodash,因此使用的解决方案可能最适合我的需求。


问题答案:

那是你要找的东西吗

$scope.$watch("id", _.debounce(function (id) {
    // Code that does something based on $scope.id
    // This code will be invoked after 1 second from the last time 'id' has changed.
}, 1000));

但是请注意,如果您想在该函数内更改$
scope,则应将其包装$scope.$apply(...)为除非_.debounce函数在$timeout内部使用(据我所知它没有使用),Angular不会知道您对进行的更改$scope

更新

关于更新的问题-是的,您需要使用以下命令包装整个回调函数主体

$scope.$apply()

$scope.$watch("id", _.debounce(function (id) {
    // This code will be invoked after 1 second from the last time 'id' has changed.
    $scope.$apply(function(){
        // Code that does something based on $scope.id
    })
}, 1000));


 类似资料:
  • 更新 我在这里找到了一个使用的高通滤波器示例。在我的代码中这样实现它。 在我实际测试低声音是否被滤波器静音之前,我遇到了一个问题。使用几秒钟后将音频完全静音。我尝试了0,1500等。几秒钟后,它会变得安静。 原始帖子 我使用下面的约束来抑制噪音。 但我也想静音一些更高的频率。即使我在某个表面上慢慢移动手机,麦克风也会捕捉到噪音并将其发送给其他同伴。它甚至会捕捉到我的呼吸声,并在我将其放在支票附近时

  • 本文向大家介绍我可以使用HTML5一次播放同一声音吗?,包括了我可以使用HTML5一次播放同一声音吗?的使用技巧和注意事项,需要的朋友参考一下 要同时播放声音多次,您需要克隆<audio>元素。这适用于谷歌浏览器- 该cloneNode是有用返回节点的副本,并在再次运行声音帮助。

  • 我已经实现了一个基于lucene的软件来索引超过1000万的人名,这些人名可以用不同的方式书写,比如“Luíz”和“Luis”。索引是使用各个标记的语音值创建的(创建了一个自定义分析器)。 目前,我正在使用QueryParser查询一个给定的名称,结果很好。但是,在《Lucene in Action》一书中提到,SpanarQuery可以使用标记的接近性来改进我的查询。我对名称的非拼音索引使用了S

  • 问题内容: 我尝试在各种线程上进行搜索,但是我不能最终理解这一点。 我尝试执行上述代码段,但没有用。我可以做这样的事情吗?如果是,那么我在这里做错了什么? 问题答案: 只允许使用一个控制器,它将作为中的控制器分配给加载模板。无需在模板中为主控制器定义。 如果需要定义多个控制器,建议您定义一个主/父控制器,并在中使用它,然后使用指令在模板中已有其他控制器。 要么… 使用Angular UI的 UI-

  • 我正在Jenkins上使用Sonar的PMD插件对我的代码进行静态分析。我还在运行Eclipse的PMD插件(准确地说是Eclipse PMD 1.5(http://marketplace.eclipse.org/content/eclipse-pmd )). 我的问题如下:我想抑制某个PMD警告。假设我想要抑制警告ShortClassName(http://pmd.sourceforge.net

  • 问题内容: 我在使用AngularJS ng-repeat时遇到了一些麻烦。这是我所拥有的: modal.data.answer数组将始终包含六个元素。我可以使用ng-repeat为其创建HTML并让它甚至重复数组中的[x]个数字,并让“ selected =”的第一行中的数字从3递增到8吗? 就我所知,我可以使用,但如何将t的值转化为类似的东西: 问题答案: 您的编辑以正确的方式进行,您可以轻松