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

来源:互联网 发布:淘宝高佣金采集 编辑:程序博客网 时间:2024/04/29 19:56

在做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 0
原创粉丝点击