尝试使用SQL lite的示例,但是遇到了一个残障。
示例说明,在app.js中包含ngCordova:
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'ngCordova'])
那部分有效。
然后在.run指令中创建DB +表:
db = $cordovaSQLite.openDB("space.db");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS locations (id integer primary key, latitude text, longitude text, altitude text, speed text, date text, time text)");
那部分也有效......
然后,在services.js中,我想在获取GPS位置时添加记录。
我在services.js中使用此代码执行此操作:
angular.module('starter.services', [])
.factory('Geolocation', function() {
var callBackFunction ;
var latitude, longitude, altitude ;
function getPosition(){
return new Array(latitude, longitude, altitude, speed, GPSEnabled);
}
function showPosition(position) {
latitude = position.coords.latitude ;
longitude = position.coords.longitude ;
altitude = position.coords.altitude ;
speed = position.coords.speed ;
var query = "INSERT INTO locations (latitude, longitude, altitude, speed) VALUES (?,?,?,?)";
$cordovaSQLite.execute(db, query, [latitude, longitude, altitude, speed, date, time]).then(function(res) {
console.log("INSERT ID -> " + res.insertId);
}, function (err) {
console.error(err);
});
callBackFunction();
}
navigator.geolocation.getCurrentPosition(showPosition, showError, options);
}
然而,我收到错误
未捕获的ReferenceError:$ cordovaSQLite未定义
services.js如何继承app.js中定义的$ cordovaSQLite?
答案 0 :(得分:3)
将$cordovaSQLite
服务注入您的factory
,如下所示:
angular.module('starter.services', [])
.factory('Geolocation', ['$cordovaSQLite', function($cordovaSQLite) {
//do something with $cordovaSQLite
}]);
以下是我使用的语法的更多内容: https://docs.angularjs.org/guide/di#dependency-annotation
修改强>:
您的模块starter.services
可能也缺少cordova模块ngCordova
:
angular.module('starter.services', ['ngCordova'])