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

时间:2016-12-21 03:09:18

标签: android sqlite cordova ionic-framework ngcordova

尝试使用插件通过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'
            });


        }

    }

}

以下是显示插件安装的捕获

plugin install

2 个答案:

答案 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;

        }
    }
}