web-dev-qa-db-ja.com

nativescriptにlocalstorageはありますか?

アプリケーションにあるページ間でデータを共有する方法。nativescriptのローカルストレージについて誰か教えてもらえますか?

8
Naren

Global.fooで使用するか、アプリ全体で使用するか、application-settingsモジュールを使用できます。

var applicationSettings = require("application-settings");
//set somewhere like this
applicationSettings.set<Number|String|Boolean>("sharedVar",1);

//get sharedVar somewhere
applicationSettings.get<Number|String|Boolean>("sharedVar");//if empty it will be null

//or if u want default value if sharedVar wasn't defined
//and if sharedVar was defined then u will get content of sharedVar
applicationSettings.get<Number|String|Boolean>("sharedVar","Default Value");

[〜#〜] docs [〜#〜]

https://docs.nativescript.org/cookbook/application-settings

https://docs.nativescript.org/api-reference/modules/_application_settings_.html

[〜#〜]編集[〜#〜]:グローバルではなくグローバル:Dのタイプミスがありました

EDIT2:applicationSettingsから関数の名前を変更し、ドキュメントへのリンク

8
Marek Maszay

あなたの質問はさまざまな方法で読むことができるので、良い答えを出すのは少し難しいですが、私は試してみます:

ナビゲーションであるページから別のページにデータを渡したい場合

コンテキストを使用してナビゲーションエントリを作成する

var navigationEntry = {
    moduleName: "details-page",
    context: {info: "something you want to pass to your page"},
    animated: false
};
topmost.navigate(navigationEntry);

...そして、ナビゲートしているページで、そのコンテキストを選択します。

function onLoaded(args) {
    console.log(args.object.navigationContext);
}

ナビゲーションに関するドキュメントを参照

アプリ全体で利用可能なデータを作成する場合

他のJavascriptアプリの場合と同じように、 singleton を作成してリクエストするだけです。

例えば。

ファイル:myData.js

var data = {
    something: 'a value here',
    somethingElse: 1
    somethingMany: ['a', 'b', 'c']
};

exports.data = data;

そのデータを読み取りたいファイル:

var data = require("./myData.js").data;
console.log(data);

Javascriptのモジュールについてもっと読む

ローカルデバイスでデータを永続化する場合

データの書き込みと読み取りを行い、セッション間でデータを保存できるようにする場合:

複雑でないデータの場合application-settingsを使用します。例えば。

var appSettings = require("application-settings");

appSettings.setString("stringKey", "String value");  // Writing
var value = appSettings.getString("stringKey", "No string value"); // Reading
// will return "No string value" if there is no value for "stringKey"

console.log(value)

アプリケーション設定に関するドキュメントを読む

file-systemモジュールを使用して、デバイスにファイルを書き込むこともできます。

var documents = fs.knownFolders.documents();
var path = fs.path.join(documents.path, "FileFromPath.txt");
var file = fs.File.fromPath(path);

// Writing text to the file.
file.writeText("Something")
    .then(function () {
        // Succeeded writing to the file.
    }, function (error) {
        // Failed to write to the file.
    });

file-system に関するドキュメントを読む

データベースの場合使用できるモジュールがあります。たとえば、 nativescript-sqlitenativescript-couchbase

20
Emil Oberg

「nativescript-localstorage」プラグインをインストールする場合、

tns plugin install nativescript-localstorage

これにより、ブラウザを使用しているかのように、SessionStorageとLocalStorageの両方にアクセスできるようになります。


docs から:

値を設定するには:

require( "nativescript-localstorage" );
localStorage.setItem('Another Plugin', 'By Master Technology');
localStorage.getItem('Another Plugin'); // Returns: "By Master Technology"

または

const LS = require( "nativescript-localstorage" );
LS.setItem('Another Plugin', 'By Master Technology');
LS.getItem('Another Plugin');  // Returns: "By Master Technology"

免責事項私は言われた プラグイン の作者です。

7
Nathanael

LocalStorageとSessionStorageを追加するためのNativeScriptプラグインlocalStorage/sessionStorageAPIを使用するライブラリを使用しようとしている場合。または、かなり単純なストレージエンジンが必要です。ここにあります。

チェック nativescript-localstorage モジュール

使用法

モジュールを使用するには、require() it:

require( "nativescript-localstorage" );

または、app.moduleまたはファイルにlocalstorageモジュールをインポートすることもできます。

import 'nativescript-localstorage';

次に、以下のようにコードでlocalStorage変数を使用します。

localStorage.setItem('Another Plugin', 'By Master Technology');

これにより、localStorageAPIが有効になります。したがって、ブラウザのように使用できます。

オプションで次のこともできます:

let LS = require( "nativescript-localstorage" );
LS.getItem('Another Plugin'); // Returns: "By Master Technology"
1
Vinit Solanki