当前位置: 首页 > 面试题库 >

如何在Ionic Framework中使用ngCordova s​​qlite服务和Cordova-SQLitePlugin?

梁丘霖
2023-03-14
问题内容

我一直在尝试将sqlite集成到一个简单的Ionic应用程序中,这是我一直遵循的过程

 ionic start myApp sidemenu

然后我安装sqlite插件:

ionic plugin add https://github.com/brodysoft/Cordova-SQLitePlugin

和ngCordova

bower install ngCordova

这给了我以下选择:无法找到合适的角度版本,请选择以下选项:1)angular#1.2.0,已解析为1.2.0,是ngCordova#0.1.4-alpha所必需的2)angular#>
=解析为1.2.0且由Angular-ui-router#0.2.10所需的1.0.8 3)解析为1.2.25且由Angular-
animate#1.2.25所需的angular#1.2.25,进行了角度消毒#1.2.25
4)解析度为1.2.25且由ionic#1.0.0-beta.13要求的angular#〜1.2.17加上!持久保存到bower.json

我选择了选项3),并将脚本包含在文件中,如下所示:

<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>

然后,我向搜索视图添加了一个控制器:

.controller('SearchCtrl', function ($scope, $cordovaSQLite){
  console.log('Test');
   var db = $cordovaSQLite.openDB({ name: "my.db" });

        // for opening a background db:
        var db = $cordovaSQLite.openDB({ name: "my.db", bgType: 1 });

        $scope.execute = function() {
          console.log('Test');
          var query = "INSERT INTO test_table (data, data_num) VALUES (?,?)";
          $cordovaSQLite.execute(db, query, ["test", 100]).then(function(res) {
            console.log("insertId: " + res.insertId);
          }, function (err) {
            console.error(err);
          });
     };
})

这导致了错误:

> TypeError: Cannot read property 'openDatabase' of undefined
>     at Object.openDB  (http://localhost:8100/lib/ngCordova/dist/ng-cordova.js:2467:36)

接下来,我尝试通过以下方式手动包括SQLitePlugin.js:从 plugins / com.brodysoft.sqlitePlugin /
www
复制到主 www / 并将其添加到index.html页面

我尝试过包括所有内容:

 <script src="SQLitePlugin.js"></script>
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>

我收到错误 ReferenceError:未定义cordova, 因此我尝试在cordova.js脚本之后包含它,但仍然收到相同的错误

如果有帮助,我将非常感谢您的帮助,这些是我正在使用的Cordova和ionic的当前版本:

ionic --version  1.2.5
cordova --version 3.5.0-0.2.7

这是生成的bower.json

{
  "name": "myApp",
  "private": "true",
  "devDependencies": {
    "ionic": "driftyco/ionic-bower#1.0.0-beta.13"
  }
}

和我的package.json:

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "myApp: An Ionic project",
  "dependencies": {
    "gulp": "^3.5.6",
    "gulp-sass": "^0.7.1",
    "gulp-concat": "^2.2.0",
    "gulp-minify-css": "^0.3.0",
    "gulp-rename": "^1.2.0"
  },
  "devDependencies": {
    "bower": "^1.3.3",
    "gulp-util": "^2.2.14",
    "shelljs": "^0.3.0"
  }
}

问题答案:

如果有人在尝试在浏览器中运行时仍然遇到错误,请尝试以下一种方法:

if (window.cordova) {
      db = $cordovaSQLite.openDB({ name: "my.db" }); //device
    }else{
      db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // browser
    }


 类似资料:
  • 问题内容: 我是Android开发的新手,我有一个用php制作的Web服务,现在我想在android中使用它,任何人都可以指导我如何实现这一目标。 我已经在网上尝试了许多代码示例,但未能实现此目标。我在ADT中使用Eclipse。 任何帮助都会得到应用。 问题答案: 请通过以下链接。您将在此处找到代码示例 http://www.anddev.org/calling_a_web_service_fr

  • 问题内容: 我已经能够让控制器将$ on侦听器与一起使用。 但我看不到任何有关如何获取服务以监听事件的文档。 我试过了,但是只允许一个听众。我希望多个服务中的侦听器,无论其父控制器是否在作用域内。 问题答案: 经过一番试验后,事实证明,使用最少的代码即可将事件发送到服务。 如果有其他人遇到此问题,请遵循示例服务代码。 该样本在获得相应广播后将服务模型保存并还原到本地存储中

  • 我正在使用phonegap创建我的移动应用程序。 我决定使用Couchbase来存储数据;但我不知道我是否必须使用Couchbase移动设备,或者我可以将我的应用程序(javascript)直接与Couchbase服务器连接,以及如何“查询”我的. net应用程序。 我已经在我的系统上下载了couchbase服务器,但如何将其与我的应用程序连接? 我可以使用N1QL“查询”服务器吗。NET也使用p

  • 我是phonegap新手,想安装一个插件。有许多网站解释如何使用command

  • 我使用下面的数字管道来格式化数量: 示例显示为< code>1,234,0。

  • 我想在我的LibGDX Android游戏中使用Google Play Game Services API的成就和排行榜。我所做的唯一一件事就是从游戏服务开发者网站上获取运行的示例。我已经尝试在我的项目中使用这段代码很多天了,但仍然一无所获。我也尝试过学习本教程http://helios.hud.ac.uk/u1070589/blog/?p=202但我没有“主游戏类(从ApplicationLis