Marek Brzeziński
Marek Brzeziński

Reputation: 345

nativescript - how set global variables

I'm starting with nativescript with latest version.

I've finished tutorial on offical page, but now i have more questions than answers.

Can anybody tell me, what strategies can i use to set some variables, for example after succesfull login, how to set variable or even better, run some function that is doing checks globally, and not on every view or model file ? I see that app.js is starting point for app, but looks like it cannot do any global checks ?

I think, second question is related : Almost every model view file (file called as {viewname}).js is using:

var frameModule = require('ui/frame');

Is there a way to declare this once ? Or i have to run this every time when i need frame methods ? Or maybe if this is possible, lead to poor perforance?

Thanks for any advices.

Upvotes: 2

Views: 6193

Answers (3)

Martin Mtawali
Martin Mtawali

Reputation: 31

i use model as a global like this, in model.js (or whatever you want to call it)

`
var viewModel=require("data/observable");
var model= new viewModel.Observable();
module.exports= model;`

Then say in your login.js

`  const model=require('./model')
 const password = //a password from page
 const userName = //a name from page
//after some logic to verify credentials set them accordingly as below
 model.password=password
model.userName=userName
`

now if say you are navigated to home.js or any page for that matter, just call it whenever required like so const pass=model.password,name=model.userName all with courtesy from 'model.js'

Upvotes: 0

K_G
K_G

Reputation: 2901

NativeScript has a global Variable Scope.

To use it add global. in front of a variable name:

global.userName = "usernameXYZ";

To call it:

console.log("Username= "+global.userName);

Upvotes: 9

Marek Brzeziński
Marek Brzeziński

Reputation: 345

Thanks Nikolay. Im using this pattern (maybe will help somebody) register JS:

var page = require ("ui/core/view");
var frameModule = require('ui/frame');
var appSettings = require('application-settings');

exports.loaded = function(args) {
page = args.object;
};

exports.register = function() {
var userName = page.getViewById('userName');
var userPass = page.getViewById('userPass');

if (userName.text != '' &&  userPass.text != '') {
    var name = userName.text;
    var pass = userPass.text;

    appSettings.setString('name', name);
    appSettings.setString('pass', pass);
    appSettings.setBoolean('auth', true);

    var topmost = frameModule.topmost();
    var navigationEntry = {
        moduleName: "main-page",
        context: { info: "something you want to pass to your page" },
        animated: true,
        transition: "curlDown",
        clearHistory: true
    };
    topmost.navigate(navigationEntry);

} else {
    alert('Please, fill form');
}
};

Upvotes: 1

Related Questions