微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在angularJs中编写搜索文本框的正确方法

我的应用程序的几个部分中的一个非常常见的功能一个搜索框,它接受一个字符串,然后根据字符串过滤一个表.

我的目标是能够允许用户输入内容并在几毫秒的延迟后自动更新结果.即无需点击输入按钮.

使用AngularJs过滤器可以完成数据的排序.但是,在我们更新过滤器之前,我相信我们首先要了解用户已完成输入并正在等待结果.

所以我绘制了将附加到搜索输入框的指令.

<input type="text"  update-filter placeholder="Enter search term">


 //and the directive goes like this
app.directive('updatefilter',[ '$timeout',function($timeout){
  var delay;
  return {
    link: function(scope,element){
         element.on('keypress',function(){
            if(!delay) {
                delay = $timeout(function() {
                  //perform the activity of updating the filter here
                 delay = undefined;
                },50);
           }
        }
     }
  }
});

我的问题是,这是解决这个问题的正确方法还是有更好的解决方案?

解决方法

你这太复杂了.角度可以更轻松地完成.

<input type="text" ng-model="query" ng-model-options="{ debounce: 200 }"
  ng-change="doSearch()">

使用$scope.query访问控制器中的查询.定义$scope.doSearch()进行搜索. debounce选项用于在用户完成输入后等待200ms.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐