【发布时间】:2016-03-01 23:07:38
【问题描述】:
我正在构建我的科尔多瓦 APP。创建一个空白项目后,我用 bower 安装 ngCordova,然后安装 ngCordova。我在 index.html 中添加了 ngCordova 脚本(在 ionic.bundle.js 之后和 cordova.js 之前)。然后我安装了一个 sqlite 插件。这就是 bug 出现的地方。
我不能在我的 Safari 浏览器中通过 Web Inspector 进行调试,因为我的 ngCordova 不能很好地与浏览器中的 sqlite 插件配合使用。我正在使用 cordova-sqlite-storage 0.7.15-dev "Cordova sqlite storage plugin" 插件,但我的网络检查器不断抱怨 "TypeError: undefined is not an object (evalating 'n.sqlitePlugin.openDatabase')"
我对 ngCordova 进行了一些研究,发现了这个 http://ngcordova.com/docs/common-issues/。根据文档,我应该在我的真实设备而不是浏览器上开发,因为某些插件在模拟器中不起作用,例如相机插件。但是我只需要使用浏览器应该支持的sqlite插件。
有谁知道如何使 ngCordova 与浏览器中的 sqlite 插件一起正常工作?
科尔多瓦版本:5.4.1 iPhone 5c:iOS 9.1 苹果电脑:10.10.5 Xcode:7.1.1
我的 controller.js 文件已附加。
var db = null;
angular.module('starter.controllers', ['ionic','ngCordova'])
.run(function($ionicPlatform, $cordovaSQLite) {
$ionicPlatform.ready(function() {
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
StatusBar.styleDefault();
}
db = $cordovaSQLite.openDB("my.db");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)");
});
})
.controller('SqliteCtrl', function($scope, $cordovaSQLite) {
$scope.insert = function(firstname, lastname) {
alert("test");
var query = "INSERT INTO people (firstname, lastname) VALUES (?,?)";
$cordovaSQLite.execute(db, query, [firstname, lastname]).then(function(res) {
alert("INSERT ID -> " + res.insertId);
}, function (err) {
alert(err);
});
}
$scope.select = function(lastname) {
var query = "SELECT firstname, lastname FROM people WHERE lastname = ?";
$cordovaSQLite.execute(db, query, [lastname]).then(function(res) {
if(res.rows.length > 0) {
console.log("SELECTED -> " + res.rows.item(0).firstname + " " + res.rows.item(0).lastname);
} else {
console.log("No results found");
}
}, function (err) {
console.error(err);
});
}
});
【问题讨论】:
-
您应该在此处粘贴您的
controller.js代码。我们需要查看代码,而不是图像。您可以使用edit 链接更新您的答案。 -
哪一行指向你的错误?
-
谢谢。 if (window.cordova && window.SQLitePlugin) { var db = $cordovaSQLite.openDB('accounts.db', 1 ); } else { db = window.openDatabase('accounts', '1.0', 'accounts.db', 100 * 1024 * 1024); } 修复我的错误
标签: ios xcode cordova debugging console