需求1:要求启动APP 必须先登录。启动APP 如果已经登录过了,就不显示登录页! 直接显示主页! 如果还没登录,就显示登录页,以及切换到注册等。。

因为wex5开发的功能是单页应用!比如仿淘宝,在index.w中 contens下 content 放置一个windowContainer 组件,作为主页!!,每次启动APP都是优先显示主页的!如果想要做的直接打开登录页,不优先访问主页,就需要将content删除掉!index.w中contents 下是空的!什么都不要放!!

思路

在onload事件中判断localStorage 中是否有用户信息,(可以参考:/UI2/demo/netease/index.js)
如果有则直接跳转到主页:justep.Shell.showPage(“main”);

如果没有用户信息,就弹出一个windowDialog 显示登录页!登录后,在windowDialog的onReceive 事件中再跳转到主页:justep.Shell.showPage(“main”);!

windowDialog 组件的routable 属性设置为false ,可以防止回退到登录页!这样就只能打开不能路由回去了!

注册页面也可以放置在windowDialog 中,使用contents组件切换显示登录和注册页面即可!!

登录后可以将用户信息放置公共的KO 对象中,这样每个页面都能获取用户信息了!:http://docs.wex5.com/wex5-ui-question-list-2096

 

(注意:第一次Shell.showPage跳转的页面就是主页,所以登录页才不要使用showPage打开!!否则它就是主页了不符合需求!所以使用windowDialog!!!

 

需求2:app启动后,直接访问主页,不需要必须登录。只有打开某些页面的时候才做判断是否登录,也可以

思路

也可以在index.w门户中放置一个windowDialog 作为登录页!和‘需求1’ 的思路是一样的! 每一个shell.showPage 打开的页面就相当于是windowContainer组件嵌套在index.w中显示的子页面,所以打开页面的时候判断是否登录过了,然后调用this.getParent().comp(‘windowDialog’).open()  打开登录页面,执行登录的逻辑(如上