2012-05-25 73 views
0

我有一個基本的ExtJS 4.0手風琴。我想在一個面板的文本內部有一個內聯鏈接,它將關閉該面板並打開另一個面板。Extjs4手風琴 - 面板之間的內聯鏈接

在下面的例子中,面板1中的鏈接應該打開面板2.什麼樣的點擊功能可以在這裏工作?

Ext.create('Ext.panel.Panel', { 
title: 'Accordion Layout', 
layout:'accordion', 
layoutConfig: { 
    // layout-specific configs go here 
    titleCollapse: false, 
    animate: true, 
    activeOnTop: true 
}, 
height: 300, 
width: 400, 
items: [{ 
    title: 'Panel 1', 
    id: 'p1', 
    html: 'Text goes here. <p><a id="linkP2" href="#">Go to panel 2</a></p>' 
},{ 
    title: 'Panel 2', 
    id: 'p2', 
    html: 'Panel content!' 
},{ 
    title: 'Panel 3', 
    id: 'p3', 
    html: 'Panel content!' 
}], 
renderTo: Ext.getBody() 
});​ 

回答

1

我最終找到一個相當簡單的解決方案:

<a id="linkP2" href="javascript:onClick=Ext.getCmp(\'p2\').expand();">Go to panel 2</a> 

Ext.getCmp.expand允許手風琴內的特定ID的選擇。

1

這是我最近做的一個改變tab鍵導航處理程序的擴展面板。我的手風琴面板被包含在一個tabpanel所以第一個變量獲得激活的標籤,你可以改變,但是你想獲得手風琴面板本身爲滿足您的需求,是這樣的:

var tab = Ext.ComponentQuery.select(panel[layout=accordion]); 

將努力爲您獲得如果這是您應用中唯一的手風琴面板,請參考手風琴。

// direction arg is either 1 or -1 depending on whether we want to go 
// forward or backward 
shiftPanels: function(direction) { 
    var tab = this.getMainPanel().getActiveTab(), // gets the active tab panel 
     panels = tab.items, // gets all of the accordion panels 
     active = tab.child('[collapsed=false]'), // gets the expanded panel 
     shifted; 

    // get the panel at direction + index (the panel we want to expand) 
    panels.each(function(panel, idx) { 
     if (active == panel) { 
      shifted = panels.getAt(direction + idx); 
      return false; 
     } 
    }); 

    // expand the shifted panel or wrap around to the beginning or end 
    if (shifted) { 
     shifted.expand(); 
    } else if (direction > 0) { 
     shifted = panels.getAt(0); 
     shifted.expand(); 
    } else { 
     shifted = panels.getAt(panels.length - 1); 
     shifted.expand(); 
    } 
}, 
+0

這有幫助,但我最終找到了一個相當簡單的解決方案。在啓用鍵盤切換時,這是一個不錯的方法。 – Voodoo