[英]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.