Javascript 鸡肉或鸡蛋,带分辨率,设备就绪,使用SQLite插件检索数据
在我的Angular/Ionic应用程序中,当用户第一次打开应用程序时,我试图将其重定向到状态Javascript 鸡肉或鸡蛋,带分辨率,设备就绪,使用SQLite插件检索数据,javascript,sqlite,cordova,ionic-framework,ngcordova,Javascript,Sqlite,Cordova,Ionic Framework,Ngcordova,在我的Angular/Ionic应用程序中,当用户第一次打开应用程序时,我试图将其重定向到状态设置,但尚未设置默认帐户设置。为此, 我使用数据库SQLite(来自ngCordova使用的Phonegap构建中的brodysoft) 当且仅当用户已设置其帐户时,此数据库将包含一个表Variables 使用UI路由器,我将解析函数附加到第一个状态(Auth),另请参见下文 解析函数setupResolve()尝试从表Variables中检索数据,成功时解析状态“Auth”,失败时将用户重定向到状态
设置
,但尚未设置默认帐户设置。为此,
- 我使用数据库SQLite(来自ngCordova使用的Phonegap构建中的brodysoft)
- 当且仅当用户已设置其帐户时,此数据库将包含一个表
Variables
- 使用UI路由器,我将解析函数附加到第一个状态(
),另请参见下文Auth
- 解析函数
尝试从表setupResolve()
中检索数据,成功时解析状态“Auth”,失败时将用户重定向到状态Variables
Setup
- 要打开SQLite数据库并执行查询(如SELECT),设备需要准备就绪。在Ionic中,这对应于在函数
中包装数据库的打开和查询-请参阅教程李>$ionicPlatform.ready(){}
- 但是,在解决所有解析功能之前,设备将无法准备就绪
- 但同样,为了解决这个问题,平台需要准备好,以便能够访问SQLite,这只有在所有函数都解决之后才能发生
//
// I-1
self.openDb = function(method) {
//
var qOpen = $q.defer();
$ionicPlatform.ready(function() {
// ** NEVER REACHED WHEN USED IN RESOLVE CONTEXT **
// Open Db
if(window.cordova) {
db = $cordovaSQLite.openDB("starter.db");
} else {
db = window.openDatabase("starter.db", "1.0", "My app", 1024 * 1024 * 100);
}
// Create Tables
self.createTables().then(function(){
qOpen.resolve(true);
}, function(error){
qOpen.reject(error);
})
})
return qOpen.promise;
};
在.config中声明身份验证、代码
注意:setupResolve函数调用函数openDb()
我几乎把整页翻了两遍。发布Plunker实际上可以让我们在开始编写代码之前检查问题。如果有兴趣,我们可以这样做,然后我建议只关注openDb和Query部分,因为基本上问题是我正在尝试解决打开数据库和检索数据的问题。然而,要检索这些数据,平台需要准备好,但只有在所有问题都解决后,平台才准备好,所以你会遇到鸡或蛋的情况。我已经重写了我的问题,请看一下,现在是否更清楚了。
.state('auth', {
url: '/auth',
templateUrl: 'templates/single-auth.html',
controller: 'AuthCtrl',
resolve: {
setupResolve: setupResolve
}
})