javascript - 仅在单击 Angular 后才使用过滤器进行搜索

标签 javascript angularjs search

我想使用过滤器从大量数据(500 多个项目)中进行搜索,但是由于 Angular 两种数据绑定(bind)方式,搜索结果会在我开始输入搜索关键字时出现。但我想要的是只有在我点击搜索按钮后才会出现的数据。

直到现在,我第一次点击搜索按钮时才设法获得所需的结果,即当在搜索输入中输入搜索关键字并第一次点击搜索按钮时,搜索结果仅在点击后出现,但之后它当我输入搜索输入时开始出现。

如何让搜索结果只在点击搜索按钮后出现?

这是我目前所拥有的

       angular.module('sumitClientApp')
           .controller('AboutCtrl', function ($scope) {


  $scope.users=  [
       {name: 'john', 'address': 'tx' },
       {name: 'jim  ', 'address': ' ms' },
       {name: 'roy  ', 'address': ' ktm' },
       {name: 'hari  ', 'address': ' ktm' },// there is more data
     ]

    $scope.search=function(){
        $scope.usersToFilter=$scope.users;
        $scope.searchReasult=true;

    }
  });

HTML:

 <div class="search-box">
   <input type="text" ng-model="query">
    <div class="search-box-btn">
        <span> 
          <button type="button"  ng-click="search()">search
         </button></span>
    </div>
</div>
<ul class="users" ng-show="searchReasult && query">
    <li ng-repeat="user in usersToFilter | filter: query |orderBy:type"
        class="thumbnail user-listing">
        {{user.name}}
        <p>{{user.address}}</p>
    </li>
</ul>

最佳答案

您可以为输入和过滤器设置两个不同的变量:

angular.module('sumitClientApp')
           .controller('AboutCtrl', function ($scope) {


  $scope.users=  [
       {name: 'john', 'address': 'tx' },
       {name: 'jim  ', 'address': ' ms' },
       {name: 'roy  ', 'address': ' ktm' },
       {name: 'hari  ', 'address': ' ktm' },// there is more data
     ]

    $scope.search=function(){
        $scope.searchQuery = angular.copy($scope.query);
        $scope.usersToFilter=$scope.users;
        $scope.searchReasult=true;

    }
  });

HTML:

<div class="search-box">
   <input type="text" ng-model="query">
    <div class="search-box-btn">
        <span> 
          <button type="button"  ng-click="search()">search
         </button></span>
    </div>
</div>
<ul class="users" ng-show="searchReasult && query">
    <li ng-repeat="user in usersToFilter | filter: searchQuery |orderBy:type"
        class="thumbnail user-listing">
        {{user.name}}
        <p>{{user.address}}</p>
    </li>
</ul>

关于javascript - 仅在单击 Angular 后才使用过滤器进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008677/

相关文章:

Javascript onblur 事件警报框不会消失

javascript - angularjs:指令的访问 Controller

css - 为什么 form-inline 的元素之间没有空格?

javascript - 提交前在输入字段中发生 relaoad 时如何保留值?

Java - 正则表达式查找代码中的注释

javascript - 创建一个扫描用户输入的函数

javascript - 如何在javascript中将变量传递给href?

javascript - 按键时的 JQuery

javascript - 如何在asp.net中使用javascript设置工具提示?

php - 筛选结果的分页