繁体   English   中英

无法读取android中未定义的属性'openDatabase'

[英]Cannot read property 'openDatabase' of undefined in android

尝试使用插件通过ngCordova实现来管理移动设备SQLite上的数据库,但每次我尝试创建数据库时它都会显示相同的错误。 手机有Android 4.2.2

TypeError: Cannot read property 'openDatabase' of undefined

我的代码,添加离子和ngCodova使用插件

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM