我正在使用離子框架的應用程序,我正在使用sqlite來存儲約150行的列表。每行有兩個屬性,ID和Name。cordovaSQLite緩慢檢索數據使用離子框架
現在我正在使用運行查詢的數據庫工廠檢索此數據。
它的工作原理,但是當我測試了我的Galaxy Tab的3名單上大約需要5-10秒加載,一旦它通過列表項加載列表它超級laggy滾動。
這裏是我的控制器
.controller('ActionSearchCtrl', function($scope, ActionSearchDataService, DBA, $cordovaSQLite){
var tablet = true;
var query = "select action FROM actions;";
$scope.items = [];
$scope.runSQL = function(){
DBA.query(query).then(function(result){
$scope.items = DBA.getAll(result);
});
};
if(tablet){$scope.runSQL()};
這裏是我的數據庫廠
.factory('DBA', function($cordovaSQLite, $q, $ionicPlatform) {
var self = this;
// Handle query's and potential errors
self.query = function (query, parameters) {
parameters = parameters || [];
var q = $q.defer();
$ionicPlatform.ready(function() {
$cordovaSQLite.execute(herbsDatabase, query, parameters)
.then(function (result) {
q.resolve(result);
}, function (error) {
console.warn('I found an error');
console.warn(error);
alert(error.message);
q.reject(error);
});
});
return q.promise;
}
// Proces a result set
self.getAll = function(result) {
var output = [];
for (var i = 0; i < result.rows.length; i++) {
output.push(result.rows.item(i));
}
return output;
}
// Proces a single result
self.getById = function(result) {
var output = null;
output = angular.copy(result.rows.item(0));
return output;
}
return self;
})
因此,該查詢返回約150項,我需要的一切在一個頁面上(我看着無限滾動和分頁但我的客戶想要在一個頁面上的所有項目,所以這不是一個選項。從我讀過的內容來看,150個條目在觀察者方面不應該太慢,因爲我正在使用ng-repeat來顯示列表項目。任何人都可以使用cordovaSQLite插件顯示這些項目讓列表功能更快讓我知道!目前該列表幾乎不可用,我也在其他設備上嘗試過,結果相同。
我也試過在控制器創造約200虛擬對象(不打電話,到數據庫獲取數據)和性能優良。這就是爲什麼我認爲這是SQLite性能問題。如果我不夠清楚,這是我在這裏的第一篇文章,非常抱歉。
你可以嘗試不使用插件? –
沒有這個插件是什麼意思?我創建了不使用數據庫的虛擬數據,並且工作正常。我不確定這是你的意思嗎? –