2016-10-04 19 views
0

我有一個現有的數據要插入到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); 

}); 

它確實插入數據,並插入每次當我刷新瀏覽器時,我調用該函數。

我想應用程序插入一次數據,並可以使用存儲的數據。

+0

這是因爲每次刷新$ ionicPlatform.ready()運行時,爲什麼你在瀏覽器上使用cordova s​​qlite?在設備上它將運行一次 –

+0

我使用瀏覽器進行快速測試。在設備中,它將運行一次;但是,一旦我們重新加載應用程序,它會再次插入數據。 – limmouyleng

回答

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的存在價值)。

希望有所幫助。