[Angularjs在搜索框内输入时搜索速度太慢

问题描述 投票:1回答:2

我正在将angularjs用于搜索过滤器。我的申请中有多条记录。但是显示数据的速度并不慢。运行正常。

我具有搜索功能以过滤数据。例如,

我有以下记录,

    "New Logic Data Starts"

    "New Data Server"

    "Server records found new"

    "Welcome to angularjs"
  • )如果我要在搜索框中搜索“新建”,它将显示前3个结果。这些情况适用于我的应用程序。但是在文本框中输入下一个字母至少需要5秒钟。

  • )与退格键相同,如果我在文本“ New”中删除“ w”字母,则需要等待4或5秒钟才能删除下一个字母“ e”。 AGain我需要等待,需要删除“ N”。

if($scope.search){
        return $scope.search.split(' ').every(function(search){
            return card.Tag.toLowerCase().indexOf(search.toLowerCase()) != -1;
        });
      }else{
        return true;
      }
<input type="search" class="form-control search-field" placeholder="Search Card" ng-model="search">

在这里,“ card.Tag”是,card是我的响应中的数据列表,而Tag是搜索结果的字段。

例如,"Tag": "\"New Logic Data Starts\",\"New Data Server\",\"Server records found new\",\"Welcome to angularjs\"",

这里,一切对我来说都很好。但是唯一的事情是它非常缓慢。我该怎么办?

javascript angularjs
2个回答
1
投票

您可以使用angularjs filters

(() => {
  let myApp = angular.module('myApp', []);

  myApp.controller('MyCtrl', ['$scope', ($scope) => {
    let records = ["New Logic Data Starts",
      "New Data Server",
      "Server records found new",
      "Welcome to angularjs"
    ];

    $scope.records = records;
  }]);
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp">
  <input type="text" ng-model="filterString">
  <div ng-controller="MyCtrl">
    <ul>
      <li ng-repeat="r in records | filter: filterString">
        {{r}}
      </li>
    </ul>

  </div>
</div>

0
投票

您无需实现自己的代码即可使用小写字母进行搜索。 AngularJs过滤器更先进,更快速。我有一组带有8000个对象的JSON数据,angularJs过滤器可以在短短400毫秒内对其进行搜索。

ng-repeat="o in records | filter: searchString"
© www.soinside.com 2019 - 2024. All rights reserved.