【问题标题】:Ionic Framework - $CordivaSQLite "TypeError: Cannot read property 'openDatabase' of undefined"离子框架 - $CordivaSQLite “TypeError:无法读取未定义的属性‘openDatabase’”
【发布时间】:2015-12-26 19:37:11
【问题描述】:

我正在开发一个安装了 $cordovaSQLite 的 Ionic 应用程序,但是当我尝试运行 openDatabase 时,我收到错误“TypeError: Cannot read property 'openDatabase' of undefined”。

我仔细检查了我的代码,openDatabase 调用位于 $ionicPlatform.ready 函数中,并且数据库文件已正确安装,请问我有什么建议吗?

感谢和问候,

吉米

【问题讨论】:

  • 你在哪里测试你的代码?在浏览器上?
  • @Davide:我直接在我的设备上通过“run android”命令进行了测试
  • 可以添加调用openDatabase函数的部分吗?

标签: javascript angularjs cordova ionic ngcordova


【解决方案1】:

首先确保您正确安装了 ngCordova。 (安装说明可以在 ngcordova 网站上找到)以及命名插件。

当您遇到未定义的错误时,您应该始终查看是否定义了依赖项。这是从 AngularJS 开始的人最常犯的错误。

示例代码:

//inject your dependencies;
ControllerOrConfigFunction.$inject = ["$scope", "$cordovaSQLite"]

function ControllerOrConfigFunction($scope,$cordovaSQLite){
//your code here
}

这适用于您使用 $cordovaSQLite 插件的所有函数。 您还可以在 ngCordova website 上找到一个很好的示例。

有多种方法可以在 AngularJs 中定义依赖注入,我现在推荐它,然后看看 ng-annotate。

【讨论】:

    【解决方案2】:
    if (window.cordova) {
        db = $cordovaSQLite.openDB({ name: "my.db" }); //Device
        console.log("Android");
    }
    else
    {
        db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // Browser
        console.log("browser");
    }
    

    【讨论】:

    • 欢迎来到 StackOverflow 并感谢您提供帮助。看到这是您的第一个贡献,请花一些时间了解该平台的工作原理。具体来说,请查看how to make your answer great 上的提示。理想情况下,仅发布代码本身并不是很有帮助 - 您需要添加说明,说明您建议的代码如何最好地解决问题。
    猜你喜欢
    • 2015-03-30
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2018-06-29
    • 2016-12-19
    • 2018-06-01
    相关资源
    最近更新 更多