首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Cordova sqlite服务和带有离子框架的ngCordova -SQLitePlugin?

如何使用Cordova sqlite服务和带有离子框架的ngCordova -SQLitePlugin?
EN

Stack Overflow用户
提问于 2014-09-29 21:29:29
回答 4查看 30.5K关注 0票数 19

我一直在尝试将sqlite整合成一个简单的离子应用程序,这是我一直在遵循的过程:

代码语言:javascript
复制
 ionic start myApp sidemenu

然后我安装sqlite插件:

代码语言:javascript
复制
ionic plugin add https://github.com/brodysoft/Cordova-SQLitePlugin

和ngCordova

代码语言:javascript
复制
bower install ngCordova

这给了我以下选项:无法为angular找到合适的版本,请选择一个: 1)解析到1.2.0的angular#1.2.0,并且是ngCordova#0.1.4-α所要求的;2) angular#>= 1.0.8,解析到1.2.0,并且是angular-ui-router#0.2.10所要求的;3) angular#1.2.25,解析到1.2.25,并且是angular-animate#1.2.25所要求的,angular-sanitize#1.2.25 4) angular#~1.2.17,已解析到1.2.25,并且是ionic#1.0.0- with所必需的。13在选项前面加上!将其持久化到bower.json

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

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
.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);
          });
     };
})

这导致了错误:

代码语言:javascript
复制
> 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页面

我试着在所有内容之前包括:

代码语言:javascript
复制
 <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的当前版本:

代码语言:javascript
复制
ionic --version  1.2.5
cordova --version 3.5.0-0.2.7

这是生成的bower.json

代码语言:javascript
复制
{
  "name": "myApp",
  "private": "true",
  "devDependencies": {
    "ionic": "driftyco/ionic-bower#1.0.0-beta.13"
  }
}

和我的package.json:

代码语言:javascript
复制
{
  "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"
  }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-28 15:01:41

如果有人在尝试在浏览器中运行它时仍然出现错误,请尝试以下方法:

代码语言:javascript
复制
if (window.cordova) {
      db = $cordovaSQLite.openDB({ name: "my.db" }); //device
    }else{
      db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // browser
    }
票数 43
EN

Stack Overflow用户

发布于 2014-09-29 22:40:57

事实证明,这是因为Cordova是特定于平台的,并且在运行ionic serve时无法工作

当我构建和部署时,我能够在android设备上运行相同的代码,没有任何问题。

更新

您可以用window替换cordova插件来使用websql数据库,这样您就可以使用window.openDatabase()而不是sqlitePlugin.openDatabase()

票数 9
EN

Stack Overflow用户

发布于 2016-07-24 08:39:43

在Ionic 2中,我使用了以下代码。

代码语言:javascript
复制
constructor(platform: Platform) {
platform.ready().then(() => {



  if(platform.is("cordova")){
    //USE Device
  }
  else {
    //USE Browser
  }



  StatusBar.styleDefault();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26101120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档