Angular:未捕获的ReferenceError:$ cordovaSQLite未定义

时间:2016-03-14 22:50:30

标签: javascript angularjs ionic-framework

尝试使用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?

1 个答案:

答案 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模块ngCordovaangular.module('starter.services', ['ngCordova'])