【发布时间】: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));
});
});
});
【问题讨论】:
-
我已经添加了这个插件