尝试使用插件通过ngCordova实现管理移动设备SQLite上的数据库,但每次我尝试创建数据库时它都会显示相同的错误。手机有 Android 4.2.2
TypeError: Cannot read property 'openDatabase' of undefined
angular.module('starter', ['ionic', 'ngCordova'])
.run(startApp)
.controller('networkCtrl', networkCtrl)
.factory('databaseFtr', databaseFtr);
startApp.$inject = ['$ionicPlatform'];
function startApp($ionicPlatform) {
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
});
}
networkCtrl.$inject = ['$scope', 'databaseFtr'];
function networkCtrl($scope, databaseFtr) {
databaseFtr.crearDB();
}
databaseFtr.$inject = ['$cordovaSQLite'];
function databaseFtr($cordovaSQLite) {
return {
crearDB: function() {
var db;
db = $cordovaSQLite.openDB({
name: "mydata.db",
location: 'default'
});
}
}
}
以下是显示插件安装的捕获
答案 0 :(得分:0)
您可以尝试使用
window.sqlitePlugin.openDB({
name: "mydata.db",
location: 'default'
});
而不是
$cordovaSQLite.openDB({
name: "mydata.db",
location: 'default'
});
答案 1 :(得分:0)
我能够找到问题的解决方案,这是完全未知的。
产生此问题的原因是因为数据库的创建和打开是在应用程序尝试启动的同时发起的,并且因为数据库在没有启动应用程序的情况下不能存在,因为该方法创造这个,不可能被执行。
在我的情况下适用的解决方案是数据库是在通过命令ng-click
运行函数后创建的。
function networkCtrl($scope, databaseFtr) {
$scope.dbProcesos = {
dbCreate: function() {
var db;
db = databaseFtr.crearDB();
}
}
function databaseFtr($cordovaSQLite) {
return {
crearDB: function() {
var db;
db = $cordovaSQLite.openDB({
name: "patologias.db",
location: 'default'
});
return db;
}
}
}