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

时间:2015-09-30 09:42:02

标签: angularjs cordova android-sqlite phonegap-plugins

我正在使用Phonegap框架。所有 js文件都已完全加载。 我使用以下声明。

var db = window.sqlitePlugin.openDatabase({ name: "MyDB.db" });

但我得到的错误如下:

TypeError: Cannot read property 'openDatabase' of undefined

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

有一些要点需要知道:

  • 数据库活动只能在onDeviceReady()方法触发后才能完成
  • 为此,我将使用modules .run()方法打开数据库,如:

    db = $cordovaSQLite.openDB("my.db");
    

在编写此行之前,请确保已添加 SQLite插件,并在项目中添加$cordovaSQLite依赖项。

以下是一个例子:

var db = null;
var example = angular.module('starter', ['ionic', 'ngCordova'])



.run(function($ionicPlatform, $cordovaSQLite) {
    $ionicPlatform.ready(function() {
        if(window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if(window.StatusBar) {
            StatusBar.styleDefault();
        }
        db = $cordovaSQLite.openDB("my.db");
        $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)");
    });
});

希望这对你有用。作为参考,您可以使用this

答案 1 :(得分:-1)

你的TypeError回答你的问题很好;)

他无法执行功能' openDatabase()'因为此时没有定义你的window.sqlitePlugin。

向我们发送一些代码或确保在此执行时可以访问您的插件。

我建议你使用Debugger Chrom - > F12 在那里你可以很快找到你的问题:)

F12 - >退出 (底部你可以选择"控制台",顶部你选择"来源"并导航到你的文件) 断点 - >去吧:)