Extjs6.2系列之动态设置主页面(MainView)

在做qq登录时遇到一个情况,用户在qq的第三方的登录界面授权成功后,qq账号服务框架会打开你设置的回调页面,并将授权信息存储在hash中,由于Extjs只有一个index.html页面,其所有的视图都由js代码在index.html上动态创建出来,这样就不可避免的遇到这样一个问题,如果你在app.js中设置的mainView是你的登录界面(不妨叫做loginView),那么在qq登录成功后,浏览器打开回调窗口到网站首页,网站首页不应该是登录界面(loginView)而应该为你的内容页面(不妨叫做indexView)。

要解决这个问题显然至少有两种方法,第一种就是网站登录部分做成一个独立的工程,主页面做成另一个工程,将qq的回调地址指向主页面的工程,这个方法有点死板,而且比较浪费资源,估计没人会使用这个死办法。第二种方法就是动态的设置应用的mainView,在首次访问网站时将mainView 设置成loginView,qq授权后回调打开网站时将mainView设置成indexView,区别这两种情况的方式就在于前面提到的url中的hash值是否包含qq授权信息,app.js中的具体代码如下:

// mainView: 'MyMonitor.view.Login',

launch: function() {
    var s = location.hash.toString();//获得url中包含的hash值
    if(s){//如果hash值不为空,将页面设置成网站内容界面,如果为空则设置成登录界面
        this.setMainView('MyMonitor.view.main.Main');
    }else {
        this.setMainView('MyMonitor.view.Login');
    }
}
其实这里有一点我比较疑惑,根据Extjs6.2的官方文档,launch方法会在页面被加载完成时触发(原文: Called automatically when the page has completely loaded.),按照正常理解这里的page指的应该是你设置的mainView,但是上面的代码并没有配置mainView,貌似不符合页面加载完成这一条件不能触发launch函数,兴许是我理解错了吧,还望各位大神指教啊。


初写博客,内容难免有疏漏之出,还望多指正包涵



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值