2013-03-11 95 views
1

您好我需要实现保持登录我的煎茶触摸应用注销改变视图煎茶触摸

请参阅下面我的代码:

Login.js - 一旦用户点击登录,它将存储“sessionToken”在当地storage.Then它会去主页

onBtnLoginClick: function(){ 

      var loginviewGetValue = Ext.getCmp('loginview').getValues(); 
      var bbid = Ext.getCmp('bbID').getValue(); 
      var bbpassword = Ext.getCmp('bbPassword').getValue(); 
       var LoginLS = Ext.getStore('LoginLS'); 





            LoginLS.add({ 
             sessionId: 'sadsadsadasd' 
             ,deviceId:'1' 
             ,bb_id :bbid 
             }); 

             LoginLS.sync();  

            var mainForm= Ext.create('bluebutton.view.Main'); 
            Ext.Viewport.setActiveItem(mainForm); 

App.js〜每次发射功能将检查sessionToken在localStorage的。如果localStorage的是空的,然后它会去登录page.Else它会去主页

 launch: function() { 




     // Destroy the #appLoadingIndicator element 
     Ext.fly('appLoadingIndicator').destroy(); 


     // Initialize the main view 

      var LoginLS = Ext.getStore('LoginLS'); 
      LoginLS.load(); 

      var record = LoginLS.getAt(0); 


      if(record != undefined){ 
       var sessionId = record.get('sessionId'); 
       if (sessionId !=undefined){ 
        Ext.Viewport.add(Ext.create('bluebutton.view.Main')); 
       } 
       else 
        Ext.Viewport.add(Ext.create('bluebutton.view.Login')); 

      } 
      else{ 
       Ext.Viewport.add(Ext.create('bluebutton.view.Login')); 
       } 

//  Ext.create('bluebutton.view.TopMenuList'); 

    }, 

Logout.js〜退出将清除sessionToken去到登录页面再次

onLogoutClick: function scan() { 
       var LoginLS = Ext.getStore('LoginLS'); 


        Ext.Viewport.setMasked({ 
         xtype: 'loadmask', 
         message: 'Loading...' 
        }); 



       LoginLS.load(); 

       var record = LoginLS.getAt(0); 
        LoginLS.removeAll(); 
        LoginLS.sync(); 
        //Load a new view 


//     Ext.getCmp('tabpanel').destroy(); 






       var loginForm = Ext.create('bluebutton.view.Login'); 
       Ext.Viewport.setActiveItem(loginForm); 

       Ext.Viewport.setMasked(false); // hide the load screen 

但我现在有问题。我无法返回登录页面。它进入空白页面。请给我一些解决方案。谢谢。

以下是错误我得到

[WARN][Ext.data.Batch#runOperation] Your identifier generation strategy for the model does not ensure unique id's. Please use the UUID strategy, or implement your own identifier strategy with the flag isUnique. Console.js:35 
[WARN][Ext.Component#constructor] Registering a component with a id (`loginview`) which has already been used. Please ensure the existing component has been destroyed (`Ext.Component#destroy()`. Console.js:35 
[WARN][Ext.Component#constructor] Registering a component with a id (`bbID`) which has already been used. Please ensure the existing component has been destroyed (`Ext.Component#destroy()`. Console.js:35 
[WARN][Ext.Component#constructor] Registering a component with a id (`bbPassword`) which has already been used. Please ensure the existing component has been destroyed (`Ext.Component#destroy()`. Console.js:35 
[WARN][Ext.Component#constructor] Registering a component with a id (`btnLogin`) which has already been used. Please ensure the existing component has been destroyed (`Ext.Component#destroy()`. Console.js:35 
[DEPRECATE][bluebutton.view.Login#show] Call show() on a component that doesn't currently belong to any container. Please add it to the the Viewport first, i.e: Ext.Viewport.add(component); 
+0

什么是你正在越过的错误> – ThinkFloyd 2013-03-12 05:18:55

+0

嗨,我更新我的问题。 – user998405 2013-03-12 05:34:10

回答

3

看看错误消息很明显,你正试图在不破坏现有组件的情况下重新创建登录面板。出现错误是因为您不允许在应用程序中多次使用相同的id

为避免这种情况,您不应该多次创建相同的视图,您应该重复使用对性能有益的视图。还有一件事,你应该给id n元素,如果你不能没有它。

假设你无法避免id属性,你应该做的这2两件事:只要

  1. 创建新的视图只有当它不存在

    var loginView = Ext.getCmp("loginview"); 
    if(!loginView){ 
        loginView = Ext.create('bluebutton.view.Login'); 
    } 
    
  2. 摧毁登录视图它通过调用:(视为隐藏/擦除)视口:

    var loginView = Ext.getCmp("loginview"); 
    loginView.destroy(); 
    
+0

谢谢解决我的问题 – user998405 2013-03-12 18:38:02

+0

Cool Floyd,第二个对我更有价值! – sai 2014-04-12 05:07:58