【发布时间】:2017-03-24 05:16:05
【问题描述】:
我将 Ionic 2 (Angular 2) 用于混合应用程序。我将一个共享提供程序注入到将显示来自我的 SQLite3 数据库的数据的页面中,然后继续加载数据。但是,在创建我的数据库提供程序时,打开数据库需要一些时间(很少)。但是,我的代码(截至目前)在查询之前没有等待数据库打开,这显然会导致错误。
如何构建我的代码以等待数据库打开以规避崩溃?
我的数据库提供者的构造函数:
constructor(private platform: Platform) {
this.platform.ready().then(() => {
if(this.isOpen !== true) {
this.storage = new SQLite();
this.storage.openDatabase({name: "data.db", location: "default"}).then(() => {
this.isOpen = true;
this.storage.executeSql("CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, firstname TEXT, lastname TEXT)", []);
});
}
});
console.log('Hello Database Provider');
此提供程序被注入到我的页面的构造函数中。
当页面(主页)被加载时,它会触发一个调用load()函数的事件。
ionViewDidLoad() {
this.load();
console.log('Hello Home Page');
加载函数:
public load() {
this.database.getPeople().then((result) => {
this.itemList = <Array<Object>> result;
}, (error) => {
console.log("LOAD ERROR: ", error);
});
我非常希望有人能指出我正确的方向:)
【问题讨论】:
-
这里有什么消息吗?我也面临同样的问题。
-
@dermoritz 我已经解决了这个问题并添加了我的解决方案作为答案:)
标签: sqlite angular ionic-framework ionic2