Angular.js限制结果/全部搜索

时间:2014-08-12 03:06:01

标签: jquery angularjs performance

使用Angular.js

数据库有大约8000个结果。根据互联网连接,表格需要大约3-10秒才能加载。

加载所有结果。有没有办法限制说1000个结果,但搜索功能加载所有?或者角度是否有服务器端加载?

app.js非常默认:

var app = angular.module('myApp', ['ui.bootstrap']);

app.filter('startFrom', function() {
    return function(input, start) {
        if(input) {
            start = +start; //parse to int
            return input.slice(start);
        }
        return [];
    }
});
app.controller('customersCrtl', function ($scope, $http, $timeout) {
    $http.get('submit/getJobs.php').success(function(data){
        $scope.list = data;
        $scope.currentPage = 1; //current page
        $scope.entryLimit = 100; //max no of items to display in a page
        $scope.filteredItems = $scope.list.length; //Initially for no filter  
        $scope.totalItems = $scope.list.length;
    });
    $scope.setPage = function(pageNo) {
        $scope.currentPage = pageNo;
    };
    $scope.filter = function() {
        $timeout(function() { 
            $scope.filteredItems = $scope.filtered.length;
        }, 10);
    };
    $scope.sort_by = function(predicate) {
        $scope.predicate = predicate;
        $scope.reverse = !$scope.reverse;
    };
});

表格行是:

<tr ng-repeat="data in filtered = (list | filter:search | orderBy : predicate :reverse) | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit">

请原谅我的无知。如果您需要更多代码或其他内容,请告知我们。

1 个答案:

答案 0 :(得分:0)

Angular在服务器端没有分页。您应该在服务器中限制返回的结果,尝试这样的事情:

$http.get('submit/getJobs.php?currentPage=1&pageSize=100').success(function(data){
    $scope.list = data;
    $scope.currentPage = 1; //current page
    $scope.entryLimit = 100; //max no of items to display in a page
    $scope.filteredItems = $scope.list.length; //Initially for no filter  
    $scope.totalItems = $scope.list.length;
});

之后,您不断向服务器询问更多结果,增加currentPage查询字符串。