2010-08-14 97 views
0

我是ExtJS的新手,嘗試使用邊框佈局進行實驗。 我似乎無法找到將ext組件加載到中心區域的方法。Extjs - 將數據加載到邊界佈局的中心區域

一切都包含在視口中:

new Ext.Viewport({ 
    layout: 'border', 
    items: [ 

我已經設置了西部地區與TreePanel中這樣:

xtype: 'panel', 
region: 'west', 
width: 200, 
items: [{ 
    xtype: 'treepanel', 
    height: 500, 
    border: false, 
    autoScroll: true, 
    width: 199, 
    autoWidth: true, 
    id: 'navtree', 
    root: new Ext.tree.AsyncTreeNode({ 
     expanded: true, 
     children: [{ 
      text: 'Users', 
      expanded: false, 
      children: [{ 
       id: 'adduser', 
       text: 'Add User', 
       leaf: true, 
     },{ 
     id: 'deleteuser', 
     text: 'Delete User', 
     leaf: true 

等等..... 導航樹顯示正常。

中心區域是設置爲:

{ 
xtype: 'panel', 
region: 'center', 
autoScroll: true, 
contentEl: 'centercontents' 
} 

我最初加載像這樣的外部網頁:

Ext.getCmp('navtree').on('click', function(node){ 
    if(node.id == 'adduser'){Ext.get("centercontents").load({ url: "/adduser" });} 

與 「centercontents」 是在主HTML文件一個div。

這工作得很好還,但現在我想延長這種讓 對「adduser的」節點的點擊,顯示的形式直接向中心區域 ......繞過加載任何形式的附加HTML文件。

任何指針在正確的方向將不勝感激。 (示例代碼更好)

回答

0

您可能正在創建該表單對象的新實例。當這種情況發生在上面的代碼中時,正在創建對象爲addsimpleuser的重複DOM ID。這種碰撞很可能導致形式消失。

一個簡單的檢查,看它是否存在之前,創建它應該解決您的問題。

1

在這方面取得進展,但有一個新問題。

我已經改變了中心區域到:

{ 
xtype: 'panel', 
region: 'center', 
autoScroll: true, 
id: 'centercontents' 
} 

,改變了點擊:

Ext.getCmp('navtree').on('click', function(node){ 
    if(node.id == 'adduser') 
     { 
     var content = Ext.getCmp('centercontents'); 
     content.removeAll(true); 
     var container = content.add(simpleadduser); 
     content.doLayout(); 
     container.show(); 
     } 

其中simpleadduser是一種形式。

在頁面加載時,導航樹會正確顯示,然後單擊adduser 節點將該表單加載到中心頁面。但是,第二次單擊adduser 節點會使窗體消失。任何原因,它不會重新加載 本身?

1

嘗試刪除此行:content.removeAll(true);