$scope.pagingOptions = {
pageSizes: [5, 7,10, 20],
pageSize: 7,
currentPage: 1
};
$scope.setPagingData = function(data, page, pageSize)
{
var pagedData = data.slice((page - 1) * pageSize, page * pageSize);
$scope.myData = pagedData;
$scope.totalServerItems = data.length;
if (!$scope.$$phase) {
$scope.$apply();
}
};
$scope.getPagedDataAsync = function(pageSize, page, searchText) {
setTimeout(function() {
var data;
if (searchText) {
var ft = searchText.toLowerCase();
$http.get('largeLoad.json').success(function(largeLoad) {
data = largeLoad.filter(function(item) {
return JSON.stringify(item).toLowerCase().indexOf(ft) != -1;
});
$scope.setPagingData(data, page, pageSize);
});
}
else {
$http.get('largeLoad.json').success(function(largeLoad) {
$scope.setPagingData(largeLoad, page, pageSize);
var myData = $.parseJSON(JSON.parse(largeLoad));
$scope.myData = myData;
});
}
}, 100);
};
$scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage);
$scope.$watch('pagingOptions', function(newVal, oldVal) {
if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) {
$scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage);
}
}, true);
may be this code will help you for providing pagination too with fast loading of JSON data.