【发布时间】:2015-10-08 18:20:27
【问题描述】:
我正在开发基于 ionic 框架和 angular js 和 ngCordova 的移动混合应用程序。我是新手。我正在使用 SQLite 插件来操作数据库。
我有以下代码
service.js
angular.module('imrapp.services', ['imrapp.config'])
.factory('DB', function(DB_CONFIG, $cordovaSQLite) {
var self = this;
self.db = null;
self.firstRunTest = function() {
if (window.cordova) {
self.db = cordovaSQLite.openDB({
name: DB_CONFIG.name
}); //device
} else {
self.db = window.openDatabase(DB_CONFIG.name, '1.0', 'database', -1); // browser
}
return $cordovaSQLite.execute(self.db, 'SELECT name FROM sqlite_master WHERE type=(?) AND name=(?)', ['table', 'sync_table'])
.then(function(result) {
if (result.rows.length > 0) {
console.log(result.rows.item(0).name);
return result.rows.item(0).name;
} else {
return "No results found";
}
}, function(err) {
alert(err);
console.error(err);
});
}
return self;
})
controllers.js
angular.module('imrapp.controllers', [])
.controller('LoginCtrl', function($scope, DB) { //AuthInterceptor,
$scope.data = {};
$scope.login = function() {
var firstRun = DB.firstRunTest();
console.warn("IS FIRST RUN 2 = " + JSON.stringify(firstRun));
}
});
当我从控制器呼叫 DB.firstRunTest 时。预期的返回是result.rows.item(0).name 的值,但它返回对象{"$$state":{"status":0}}。
查询运行得非常好,因为在 DB.firstRunTest() 方法中,console.log(result.rows.item(0).name); 给出了预期值。
任何人都可以帮助我解决这个问题,我哪里出错了。 谢谢
【问题讨论】:
标签: angularjs ionic-framework ngcordova