【问题标题】:Cordova sqliteplugin pre-populated sqlite db with error 'cordova.exec is not a function'Cordova s​​qliteplugin 预填充 sqlite db 错误“cordova.exec 不是函数”
【发布时间】:2018-01-12 05:15:45
【问题描述】:

当我在onDeviceReady: function () 中使用像第一个示例这样的 sqliteplugin 时,它工作正常。但是当我在控制器中使用第二个示例时,它不起作用。

TypeError: cordova.exec is not a function.

示例 1

var app = angular.module("myApp", []);
app = {
// Application Constructor

initialize: function () {  

this.bindEvents();

},


bindEvents: function () {    

document.addEventListener('deviceready', this.onDeviceReady);
},

onDeviceReady: function () {

function copyDatabaseFile(dbName) {

  var sourceFileName = cordova.file.applicationDirectory + 'www/' + dbName;
  var targetDirName = cordova.file.dataDirectory;

  return Promise.all([
    new Promise(function (resolve, reject) {
      resolveLocalFileSystemURL(sourceFileName, resolve, reject);
    }),
    new Promise(function (resolve, reject) {
      resolveLocalFileSystemURL(targetDirName, resolve, reject);
    })
  ]).then(function (files) {
    var sourceFile = files[0];
    var targetDir = files[1];
    return new Promise(function (resolve, reject) {
      targetDir.getFile(dbName, {}, resolve, reject);
    }).then(function () {
      //console.log("file already copied");
    }).catch(function () {
      console.log("file doesn't exist, copying it");
      return new Promise(function (resolve, reject) {
        sourceFile.copyTo(targetDir, dbName, resolve, reject);
      }).then(function () {
        console.log("database file copied");
      });
    });
  });
}

copyDatabaseFile('mydatabase.db').then(function () {
  // success! :)
  var db = sqlitePlugin.openDatabase('mydatabase.db');

if(window.cordova)
    db = sqlitePlugin.openDatabase('mydatabase.db');
else
    db = sqlitePlugin.openDatabase('mydatabase.db', '1','my', 1024*1024*100);


  db.readTransaction(function (txn) {
    txn.executeSql('SELECT * FROM mytable', [], function (tx, res) {
      console.log('Successfully read from pre-populated DB:');
      console.log(JSON.stringify(res));
    });
  });
}).catch(function (err) {
  // error! :(
  console.log(err);
});

},

}

};

app.initialize();

示例 2

app.controller("Tab4Ctrl", function($scope) {
var db = sqlitePlugin.openDatabase('mydatabase.db');

if(window.cordova)
    db = sqlitePlugin.openDatabase('mydatabase.db');
else
    db = sqlitePlugin.openDatabase('mydatabase.db', '1','my', 1024*1024*100);
  db.readTransaction(function (txn) {
    txn.executeSql('SELECT * FROM mytable', [], function (tx, res) {
      console.log(JSON.stringify(res));
    });
 });
});

【问题讨论】:

  • 我已经添加了这个插件

标签: angularjs sqlite cordova


【解决方案1】:

我发现我的错误

app.controller("Tab4Ctrl",['$scope', function($scope, $sqliteplugin) {
   var db = sqlitePlugin.openDatabase('mydatabase.db');
  if(window.cordova)
       db = sqlitePlugin.openDatabase('mydatabase.db');
else
      db = sqlitePlugin.openDatabase('mydatabase.db', '1','my', 1024*1024*100);
      db.readTransaction(function (txn) {
     txn.executeSql('SELECT * FROM mytable', [], function (tx, res) {
     console.log(JSON.stringify(res));
});
});
});
}])

【讨论】:

    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2016-10-24
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多