我試圖設計一種方法來將大量數據(超過1000行)加載到頁面中,而無需分頁。在這樣做的第一個障礙是查詢並行一口大小的塊,我已經在How to make sequentially Rest webservices calls with AngularJS?使用AngularJS加載大型數據集
與解決方案的幫助下完成的,我遇到了兩個問題,什麼我不過實現的DB:
每個返回的對象都被傳遞到一個數組中,然後它自己作爲Angular用來綁定的數組返回。即[[{key:value,key:value,key:value},{key:value,key:value,key:value}],[{key:value,key:value,key:value},{key: value,key:value,key:value}]]因此,我不能在數據中使用ng-repeat =「item」,因爲數據是數組的數組。做「數據[0]中的項目」確實使項目可用。連接似乎是答案,但我一直沒有能夠找出一種使其工作的方式。
我正在向數據庫發出多個請求,並且每個請求都得到正確返回,但在所有請求都完成之前,頁面不會呈現 - 這完全否定了首先執行多個請求的要點。
因此,看看我的代碼,我該如何重新編寫它來解決這兩個問題?因此,數據作爲一個數組返回,並且每次查詢完成時都會呈現數據?
app.factory('ScanService', function($http, $q) {
function fetchOne(stepCount) {
return $http({
method: 'GET',
url: '/index.php/scans',
params: {step:stepCount}
})
.then(function onSuccess(response) {
return response.data;
}
return {
fetchAll: function(steps) {
var scans = [];
for (var i = 1; i <= steps; i++) {
scans.push(fetchOne(i));
}
return $q.all(scans);
}
};
});
app.controller.ScanCtrl = function($scope, $q, ScanService) {
$scope.scans = ScanService.fetchAll(10);
};
跟進
我要補充一點,我還是設法得到這個基於下面的解決方案和angular.forEach工作()。不能建議任何使用「大數據」的人走這條路。在大約1000行的時候,瀏覽器不堪重負,開始大幅度減速。試圖用angular.filter過濾也經歷了顯着的延遲,直到結果縮小。另一方面,幾百行很好地工作,並允許本地過濾 - 這是我實現的關鍵目標。
誰擁有一個理智的頭腦想凝視千行的數據? – Bart
@Bart很遺憾,我必須這樣做。一些商業分析師很喜歡使用1000行Excel數據,並希望在網絡上看到類似的視圖。雖然我完全不同意他們,有時你必須做客戶想要的東西:( – Terry
@Bart誰想要點擊100頁的10行每個?我想這實際上是我尋找替代解決方案的分頁範例和無限滾動並不能解決我遇到的問題,總體目標是加載你的數據,然後在Angular中對它進行過濾,所以你不一定會看1000行 - 但如果你瘋了,你可以。 – iamsar