我从最新版本的nativescript开始。
我已经在官方网页上完成了教程,但现在我的问题多于答案。
任何人都可以告诉我,我可以使用哪些策略设置一些变量,例如在成功登录后,如何设置变量甚至更好,运行一些全局检查的功能,而不是每个视图或模型文件? 我看到app.js是应用程序的起点,但看起来它无法进行任何全局检查?
我认为,第二个问题是相关的: 几乎每个模型视图文件(名为{viewname}的文件).js都在使用:
var frameModule = require('ui/frame');
有没有办法申报一次?或者我每次需要帧方法时都要运行它?或者,如果可能的话,可能导致性能不佳?
感谢您的任何建议。
答案 0 :(得分: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 :(得分:1)
NativeScript具有global
可变范围。
要使用它,请在变量名之前添加global.
:
global.userName = "usernameXYZ";
调用它:
console.log("Username= "+global.userName);
答案 2 :(得分: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'。