首页 文章

nativescript - 如何设置全局变量

提问于
浏览
0

我从最新版本的nativescript开始 .

我已经完成了官方页面的教程,但现在我有更多的问题而不是答案 .

任何人都可以告诉我,我可以使用什么策略来设置一些变量,例如在成功登录后,如何设置变量甚至更好,运行一些全局检查的功能,而不是每个视图或模型文件?我看到app.js是应用程序的起点,但看起来它无法进行任何全局检查?

我认为,第二个问题是相关的:几乎每个模型视图文件(文件称为) . js正在使用:

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

有没有办法申报一次?或者我每次需要帧方法时都要运行它?或者,如果这是可能的,会导致不良的穿孔?

感谢您的任何建议 .

3 回答

  • 1

    谢谢尼古拉 . 我使用这种模式(也许会帮助某人)注册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');
    }
    };
    
  • 1

    NativeScript具有 global 可变范围 .

    要使用它,请在变量名称前面添加 global.

    global.userName = "usernameXYZ";
    

    打电话给它:

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

    我在model.js中使用模型作为这样的全局(或者你想要称之为的任何东西)

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

    然后在你的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
    `
    

    现在,如果你说你被导航到home.js或任何页面,那么只要你需要就这样召唤它 const pass=model.password,name=model.userName 所有礼貌都来自'model.js'

相关问题