AngularJS使用大型数据库搜索

时间:2015-07-07 09:16:28

标签: javascript php mysql json angularjs

我有这样的问题,我有600k结果的数据库,我有一个由我创建的Web服务REST,所以我有我的请求查询的文件json。 现在我的json文件在我的角度应用移动设备中,但是我的编码它冻结了很多因为,我把所有整个文件json做了一个列表框,在显示整个列表框之后我可以搜索,当我输入任何它冻结的时候,我的实时搜索工作,我不在乎,如果我失去了这个功能,我想搜索没有冻结,但我不知道如何解决这个问题。

我有我的db mysql,我的请求的示例结果就是这个(JSON):

[
  {
    "date": "2009-02-14",
    "pool": 2,
    "timing": "H",
    "federation": "A2",
    "id_race": 73633,
    "id_com": 91
  },
  {
    "date": "2009-02-14",
    "pool": 2,
    "timing": "J",
    "federation": "A2",
    "id_race": 7348,
    "id_com": 91
  },
  {
    "date": "2009-02-14",
    "pool": 2,
    "timing": "J",
    "federation": "A2",
    "id_race": 2397,
    "id_com": 223
  },
  ...
]

我的AngularJS控制器html是这样的:

    <div ui-content-for="title">
    <span class="small">Search:<input ng-model="query"></span>
</div>
<div class="scrollable">
    <div class="scrollable-content">
        <div class="list-group">
            <div class="list-group-item" ng-repeat="race in raceList | filter:query">
                <br />
                <span>{{race.date}} - {{race.federation}} - {{race.pool}} - {{race.timing}}</span>
            </div>
        </div>
    </div>
</div>

我的控制器js是这样的:

'use strict';

var raceControllerModule = angular.module('raceControllerModule', ['appServiceModule']);

raceControllerModule.controller('raceController',
    ['$scope', '$routeParams', 'appService', function($scope, $routeParams, appService) {

        $scope.raceList = [];

        appService.newRacePromise().then(function (response) {
            $scope.raceList = response.data;
        });

    }]);

当我搜索时我不想冻结所有类似我之前输入的东西和按钮取得我的结果,搜索可以从日期或池或联邦完成。

编辑:appService.js

'use strict';

var appServiceModule = angular.module(‘appServiceModule', []);

appServiceModule.factory(‘appService', ['$http', function ($http) {

    var BASE_URL_ = "../api/";

    var service = {};

    service.newRacePromise = function () {
        return $http.get(BASE_URL_ + 'races’);
    };

    return service;
}]);

1 个答案:

答案 0 :(得分:0)

使用页面限制进行Ajax搜索。您不必在一个页面中显示所有600 k记录。