起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4225|回复: 9

[结贴] 新手求教,如何设置全局变量和使用全局变量?

[复制链接]

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
发表于 2017-7-31 08:49:47 | 显示全部楼层 |阅读模式
我有个项目,打开之后直接是主页,我想设置成这个主页如果你点击了其他按钮,就需要判读一下登录状态(或者说是全局变量的用户名),如果没有登录,则进入登录页面,输入用户名和密码后,记录用户名作为全局变量,这样其他位置想要判断是否登录时,检测一下这个用户名是否存在就可以了!现在问题是,如果记录这个登录名作为全局变量,其他页面又如何调用这个全局变量做判断,求指导代码!谢谢!
发表于 2017-7-31 11:43:18 | 显示全部楼层
建议ko对象,可以全局绑定
http://docs.wex5.com/wex5-ui-question-list-2096

用户信息存储在localStorage 中中!登录的时候判断用户信息是否存在?存在就不用再跳转到登录页了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2017-7-31 13:17:26 | 显示全部楼层
liangyongfei 发表于 2017-7-31 11:43
建议ko对象,可以全局绑定
http://docs.wex5.com/wex5-ui-question-list-2096

netease的demo中,
var userLocal = (localStorage.getItem("userUUID") && JSON.parse(localStorage.getItem("userUUID"))) || null;
                if (userLocal) {
                        justep.Shell.userName.set(userLocal.name || "UNKNOWN");
                        justep.Shell.userType.set(userLocal.accountType || "UNKNOWN");
                }
这段代码不太理解
回复 支持 反对

使用道具 举报

发表于 2017-7-31 14:03:17 | 显示全部楼层
ttszily 发表于 2017-7-31 13:17
netease的demo中,
var userLocal = (localStorage.getItem("userUUID") && JSON.parse(localStorage.get ...

判断 localStorage 中存储的值userUUID是否为空??
如果不是空的话,给全部变量   justep.Shell.userName  赋值为 localStorage中的数据!

localStorage  相当于文件中存储的数据!
  justep.Shell.userName  是变量!是存储在内存中的! 页面运行当然是访问内存中的数据最快了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2017-7-31 14:47:11 | 显示全部楼层
liangyongfei 发表于 2017-7-31 14:03
判断 localStorage 中存储的值userUUID是否为空??
如果不是空的话,给全部变量   justep.Shell.userNa ...

恩,这下子明白了!
不过还有一个问题:现在是如果不为空,将登录名值赋给了justep.Shell.userName,赋完之后在登录页面通过alert(justep.Shell.userName.get());这个值,能看到这个值,但是到其他页面使用alert(justep.Shell.userName.get());就得不到值了,这是为什么?
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2017-7-31 14:54:40 | 显示全部楼层
liangyongfei 发表于 2017-7-31 14:03
判断 localStorage 中存储的值userUUID是否为空??
如果不是空的话,给全部变量   justep.Shell.userNa ...

还有一种情况,当项目第一次运行的时候,我在主页面通过按钮判断登录状态,如果用 justep.Shell.userName.get()方法,那么会提示get方法有错,感觉应该是空值的问题,这个该怎么办?(我希望是如果 justep.Shell.userName.get()没有值的话,直接进入的登录页面,这个该如何实现?)
回复 支持 反对

使用道具 举报

发表于 2017-7-31 15:19:04 | 显示全部楼层
ttszily 发表于 2017-7-31 14:47
恩,这下子明白了!
不过还有一个问题:现在是如果不为空,将登录名值赋给了justep.Shell.userName,赋完 ...

1.请问你是单页应用 打开的吗??如果是定义的单页应用!并且是通过index.w门户页打开的!
所有的页面中justep.Shell.userName.get() 值都是一样的!
http://docs.wex5.com/shellimpl/

2.justep.Shell.userName = justep.Bind.observable('')
保证这样的代码先执行!他是一个KO 对象了才有get方法!   否则当然没有get方法!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2017-7-31 15:40:46 | 显示全部楼层
liangyongfei 发表于 2017-7-31 15:19
1.请问你是单页应用 打开的吗??如果是定义的单页应用!并且是通过index.w门户页打开的!
所有的页面中j ...

我觉得我不是单页应用打开的,我再捋顺一下我的问题:
1。我的首页是mainactivity,里边直接代码:
Model.prototype.modelLoad = function(event){
                justep.Shell.showPage("main");
        };
/*进入到index_mian.w页面*/
2。在index_mian.w页面的js中,我的代码是
Model.prototype.studyClick = function(event){
justep.Shell.userName = justep.Bind.observable();
alert("查看登录名:"+justep.Shell.userName.get());
/* 此时弹出提示为:undefined;我的想法是如果这块没有值,那么证明我没有登录,应该跳转到登录页面justep.Shell.showPage("login");  但是目前的情况我无法判断这个undefined,就自然无法跳转登录页了*/
3。在我的login页面,我的代码是:
var username = this.comp("input1").val();
justep.Shell.userName = justep.Bind.observable();
justep.Shell.userName.set(username);
alert(justep.Shell.userName.get());
/*此处我已经把username存入了justep.Shell.userName,并且alert也看到了值,但是回到index_mian.w时,还是justep.Shell.userName.get()为undefined,好像之前页面存储与这页无关似的*/
这就是我的问题!
回复 支持 反对

使用道具 举报

发表于 2017-7-31 15:44:33 | 显示全部楼层
ttszily 发表于 2017-7-31 15:40
我觉得我不是单页应用打开的,我再捋顺一下我的问题:
1。我的首页是mainactivity,里边直接代码:
Model ...

justep.Shell.userName = justep.Bind.observable('');
这行代码只定义一次就行了!不要在每个页面都重新定义!

之定义一次表示是一个ko对象!

如果执行了多次,就相当于重新初始化一个KO对象!覆盖了以前的对象!

本身就不是一个对象了!当然就没有get方法了!
如果是空建议默认给个空字符串!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2017-7-31 15:58:21 | 显示全部楼层
liangyongfei 发表于 2017-7-31 15:44
justep.Shell.userName = justep.Bind.observable('');
这行代码只定义一次就行了!不要在每个页面都重 ...

谢谢大神,完美解决!只在第一页定义一次,并且赋一个空值,就解决了!我太彪了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-10 03:45 , Processed in 0.053563 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表