2016-10-04 1 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() работает, почему вы используете кордову sqlite над браузером? Над устройством он будет работать один раз –

+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 после вставки с функцией).

Надеюсь, что это поможет.

Смежные вопросы