2015-04-22 78 views
0
 $http.get('resturl').success(function (data) { //makes a rest call here 
      $scope.myData = data; 
    }); 

只有在请求完成后才会在网格中加载数据。我有非常大的数据,所以这使得用户等待2分钟-3分钟来加载网格。有没有办法快速渲染大量数据?花费大量的时间来渲染大型json数据

+0

它看起来像你有问题在服务器端 –

+0

使用分页http://angular-ui.github.io/ng-grid/:服务器端分页示例 –

+0

这似乎是你的问题是你的网格(或者也许你的服务器的响应速度太慢) - 无论如何,很难知道你提供的信息。 – Sacho

回答

0

在服务器端为大数据集使用分页数据,并使用分页网格将其显示给用户。

在这个问题上,你有分页nggrid的example

+0

使用分页没有帮助。当我改变页面时,会再次发出请求,并且再次需要时间来获取数据。 – user2515138

+0

此“分页”请求将仅提取要显示在网格的单个页面中的所需数据。 –

0

单向绑定使事情更快使用::看到 Simple One way binding for ng-repeat?,可以减少你的数据吗?还看看分页?

是您的服务器速度慢,我发现,一旦绑定完成在定时器做这样的事情

$http.get('resturl').success(function (data) { //makes a rest call here 
      console.log("Request Complete"); 
      $scope.myData = data; 
      $timeout(function() { console.log("Binding complete"); }); 
    }); 

日志将得到执行。

了解您的网格的内容也将有所帮助。

+1

内容是文字...分页没有帮助。 – user2515138

0
$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); 

可能是这段代码可以帮助您提供快速加载JSON数据的分页。

相关问题