2012-05-21 67 views
0

我是sencha touch的新手。无法在sencha touch中刷新面板

对于我的移动网站,我面临的问题是UI元素的渲染彼此重叠,当我刷新或拉伸窗口时,UI元素的渲染将按需要显示。

所以,我试图刷新面板使用doLayout但无法做到这一点。可能是我没有在正确的地方使用doLayout()。

这是我的代码。

var app=new Ext.Application({ 
    name:'entwoven', 
    useLoadMask:true, 
    launch:function() 
    { 

    Ext.setup({tabletStartupScreen:'tablet_startup.png', 
     icon:'icon.png', 
     glossOnIcon:true, 
     onReady:function(){ 


    var loginScreen = Ext.getCmp('loginPanel').items.items[0]; 
    loginScreen.doLayout(); 



    entwoven.views.loginToolbar = new Ext.Toolbar({ 
    id:'loginToolbar', 
    title: 'Login', 
    dock :'top' 
    }); 

    entwoven.views.imgPanel = new Ext.Panel({ 
     id: 'imgPanel', 
     html : '<div class="volkwagen"><center></center></div>' 

    }); 

    entwoven.views.formPanel = new Ext.form.FormPanel({ 
     id : 'formPanel', 
     items: [{ 

      xtype : 'textfield', 
      id: 'userId', 
      name: 'name', 
      placeHolder: 'UserId' 
     }, 
     { 
      xtype: 'passwordfield', 
      id: 'passwordfield', 
      name : 'password', 
      placeHolder: 'Password' 
     } 

    ] 
    }); 

    entwoven.views.storebtnPanel = new Ext.Panel({ 
     id: 'storebtnPanel', 
     layout: 'hbox', 
     items :[{ 
      xtype : 'button', 
      cls : 'storebtnAction', 
      activeCls : 'activeStore', 
      id: 'storebtn' 
      },{html : 'Store', 
       id: 'storetext'}] 
    }); 

    entwoven.views.btnPanel = new Ext.Panel({ 
     id: 'btnPanel', 
     items:[{ 
      xtype : 'button', 
      cls : 'btnAction', 
      id: 'loginbtn', 
      activeCls : 'activeLogin', 
      name: 'loginButton', 


     }] 
    }); 


    entwoven.views.loginPanel = new Ext.Panel({ 
     id:'loginPanel', 
     fullscreen:true, 
     cls: 'panelBackground', 
     dockedItems: entwoven.views.loginToolbar, 
     items : [entwoven.views.imgPanel,entwoven.views.formPanel,entwoven.views.storebtnPanel,entwoven.views.btnPanel] 

     }); 

entwoven.views.viewport = new Ext.Panel({ 
    layout: 'card', 
    fullscreen: 'true', 
    cardAnimation: 'slide', 
    cls: 'com', 
     items: [entwoven.views.loginPanel] 
    }); 
} 
}); 


} 
}); 

在控制台上,我得到的错误是"Uncaught TypeError: Cannot read property 'items' of undefined"

请帮助如何刷新或'更新'上述面板,以便我可以正确呈现UI元素。

谢谢

回答

2

第一件事情,你需要将此代码移动到onReady事件的底部:

var loginScreen = Ext.getCmp('loginPanel').items.items[0]; 
loginScreen.doLayout(); 

原因是,你还没有定义loginPanel组件,让你参考它将是空的。将其移动到底部,或者更具体地说,在loginPanel定义之后将解决项目未定义的错误。

请更明确有关UI渲染问题:

  • 你瞄准什么分辨率?
  • 哪些组件不能正确渲染?