![](/img/trans.png)
[英]Android WebView “Cannot read property 'getAttribute' of undefined”
[英]Cannot read property 'openDatabase' of undefined in android
尝试使用插件通过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'
});
}
}
}
这是显示插件安装的捕获
你可以尝试使用
window.sqlitePlugin.openDB({
name: "mydata.db",
location: 'default'
});
代替
$cordovaSQLite.openDB({
name: "mydata.db",
location: 'default'
});
我能够找到问题的解决方案,这是完全未知的。
产生此问题的原因是因为数据库的创建和打开意图在应用程序尝试启动的同时发起,并且由于数据库在没有启动应用程序的情况下不能存在,因为创建的方法这个,不可能被执行。
在我的情况下适用的解决方案是在通过命令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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.