在离子中将数据插入设备一次

时间:2016-10-04 06:57:55

标签: angularjs sqlite ionic-framework

我有一个现有的数据要插入sqlite中。我这样做了:

var db = null;
function createDatabase($cordovaSQLite){

  if (window.cordova) {
    db = $cordovaSQLite.openDB({ name: "test.db" }); 
  }else{
    db = window.openDatabase("test.db", '1.0', 'database', 1024 * 1024 * 100); 
  }

  var classes = "CREATE TABLE IF NOT EXISTS classes (id integer primary key, name text)";

  $cordovaSQLite.execute(db, classes);

  var classesQuery = "INSERT INTO classes (name) VALUES 'class1'"
  $cordovaSQLite.execute(db, classesQuery);
}

我在应用程序准备就绪时调用了这个函数

$ionicPlatform.ready(function() {
  if(window.cordova && window.cordova.plugins.Keyboard) {
    cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    cordova.plugins.Keyboard.disableScroll(true);
  }
  if(window.StatusBar) {
    StatusBar.styleDefault();
  }

  createDatabase($cordovaSQLite);

});

每次刷新浏览器时都会插入数据并插入。

我希望应用程序一次插入数据,并可以使用存储的数据。

1 个答案:

答案 0 :(得分:0)

因此,您必须首次定义应用运行。在app.js中,在函数

$ionicPlatform.ready(function() {

你应该创建它(ApplicationInitialRun是一个服务):

if (ApplicationInitialRun.isInitialRun()) {
     ApplicationInitialRun.setInitialRun(false);
 } 

和services.js

.factory('ApplicationInitialRun', function ($window,ConnectivityMonitor,$ionicPopup) {
return {
  setInitialRun: function (initial) {
      $window.localStorage["initialRun"] = (initial ? "true" : "false");

  },
  isInitialRun: function () {
     var value = $window.localStorage["initialRun"] || "true";
       $window.localStorage['newuser']="new";
       return value == "true";

  }
};
})

所以,你可以在初始运行中调用你的函数,或者你可以看到我使用$ window.localStorage ['newuser'] =“new”;。有了这个我能够检查例如

if($window.localStorage['newuser']=="new"){ 

并在用户是否为新用户时调用函数(在您的情况下,您可以在插入函数后检查localstorage中是否存在该值)。

希望有所帮助。