我在Ionic上有一个项目,我需要在主页上呈现数据库的一些信息,比如TODO程序。
我已经掌握了有关数据库的一些信息,我试图渲染项目列表,但我有下一个问题:
问题是我希望视图等到加载数据库信息直到显示任何内容,我想知道我是否可以使用某种加载图标。
我已经按照这里的答案:Open database before main controller is called in Ionic and SQlite
我正在进行数据库初始化,但正如我所说,在呈现视图后加载数据。
我已尝试使用$ionicLoading
,但我没有取得任何好结果
这是我的观点:
.controller('homeCtrl', function ($scope, $state, $cordovaSQLite, DB) {
$scope.$on('$ionicView.enter', function() {
tasks = []
var query = "SELECT * FROM task;";
$cordovaSQLite.execute(DB.db, query, []).then(function(results) {
if(results.rows.length > 0) {
for (i=0; i<results.rows.length; i++){
console.log("SELECTED -> " + results.rows.item(0).title);
$scope.tasks.push(results.rows.item(i))
}
} else {
console.log("No results found");
}
}, function (err) {
$scope.tasks = [];
console.error(err);
});
$scope.tasks = tasks;
});
})
这是我现在遇到的问题的视频示例:
答案 0 :(得分:0)
最后,我根据路线中使用resolve的建议找到了解决方案。
.state('home', {
url: '/',
templateUrl: 'templates/home.html',
controller: 'homeCtrl',
resolve: {
tasks: function(DB) {
return DB.getTasks();
});
}
}
})
我有一个名为DB的工厂,我有一些函数可以从数据库中检索数据。在此示例中,我使用DB.getTasks()
要加载路径上已解析的变量任务,我必须在函数上添加变量名称,如下所示:
app.controller('homeCtrl', function (tasks) {
$scope.tasks = tasks;
})