2015-01-07 3 views
0

항목을 추가 할 때 아코디언 레이아웃에 항목을 동적으로 추가하고 싶습니다. 축소 버튼이 작동하지 않습니다.Extjs 5.0, accordian에 항목을 동적으로 추가하십시오.

동적으로 항목을 직접 추가하면 올바르게 작동합니다. 만약 당신이 어떻게 간단한 예제를하시기 바랍니다, 나는 당신의 도움을 주셔서 감사합니다. 은 아래에있는 내 코드입니다 :

내가 조금 귀하의 코드를 단순화했습니다의 좀 더 구체적인 문제에 대한 것을, 그것을 단순화 난 더 이상 문제를 복제 할 수 아니에요
<!DOCTYPE html> 
<html> 
<head> 

    <link rel="stylesheet" type="text/css" href="framework/packages/ext-theme-gray/build/resources/ext-theme-gray-all.css"> 
    <script type="text/javascript" src="framework/build/ext-all.js"></script> 
    <script type="text/javascript" src="framework/build/packages/ext-theme-gray/build/ext-theme-gray.js"></script> 

</head> 
<body> 
    <script > 
     Ext.onReady(function(){ 

     var viewport = new Ext.Viewport({ 
      layout: 'border', 
      renderTo: Ext.getBody(), 
      items: [ 
       { 
       region: 'west', 
       id: 'west-panel', // see Ext.getCmp() below 
       layout: { 
        type: 'accordion', 
        titleCollapse: false, 
        animate: true, 
        activeOnTop: true 
       }, 
       title: 'West', 
       split: true, 
       width: 300, 
       minWidth: 175, 
       maxWidth: 400, 
       collapsible: false, 
       animCollapse: false, 
       margins: '0 0 0 5', 
       items: [{id: 'generalParam' ,title: 'General Param'     ,iconCls: 'nav' , 
       dockedItems: [{xtype: 'toolbar',dock: 'left',margins: '5 5 5 5', 
           items: [ 
             {xtype: 'button',text: 'Currency' ,iconCls:'chr'}, 
             {xtype: 'button',text: 'Area'  ,iconCls:''}, 
             {xtype: 'button',text: 'Bank'  ,iconCls:''}, 
             {xtype: 'button',text: 'Network' ,iconCls:''}, 
             {xtype: 'button',text: 'MCC'  ,iconCls:''}, 
             {xtype: 'button',text: 'Static Data',iconCls:''}, 
             {xtype: 'button',text: 'Interfaces' ,iconCls:''}, 
             {xtype: 'button',text: 'Sequences' ,iconCls:''}, 
             {xtype: 'button',text: 'MCC'  ,iconCls:''} 
           ]}] 

           } 
       ] 
      }, 
      Ext.create('Ext.tab.Panel', { 
       region: 'center', // a center region is ALWAYS required for border layout 
       deferredRender: false, 
       items: [{ 
        bodyStyle: 'background-image:url(images/square.gif)', 
        html: 'Internal notes go here', 
        title: 'Welcome', 
        closable: true, 
        autoScroll: true 
       }] 
      }),   { 
       xtype: 'tabpanel', 
       autoShow:true, 
       region: 'east', 
       title: 'Information', 
       animCollapse: true, 
       collapsible: true, 
       split: true, 
       width: 275, // give east and west regions a width 
       minSize: 175, 
       maxSize: 400, 
       margins: '0 5 0 0', 
       activeTab: 1, 
       tabPosition: 'bottom', 
       items: [{ 
        html: '<p>A TabPanel component can be a region.</p>', 
        title: 'A Tab', 
        autoScroll: true 
       }, Ext.create('Ext.grid.PropertyGrid', { 
         title: 'Property Grid', 
         closable: false, 
         source: { 
          "(name)": "Properties Form", 
          "grouping": false, 
          "autoFitColumns": true, 
          "productionQuality": false, 
          "created": Ext.Date.parse('10/15/2006', 'm/d/Y'), 
          "tested": false, 
          "version": 0.01, 
          "borderWidth": 1 
         } 
        })] 
      }, 
      { 
       xtype:'panel', 
       region: 'south', 
       split: true, 
       height: 100, 
       minSize: 100, 
       maxSize: 200, 
       collapsible: true, 
       collapsed: true, 
       title: 'South', 
       margins: '10 10 10 10' 
      } 
      ] 
      }); 


      var item1 = {id: 'cardSetting' ,title: 'Card Settings'     ,iconCls: 'settings'}; 
      var item2 ={title: 'new item'    ,iconCls: 'crv' }; 

      Ext.getCmp('west-panel').add(item1); 
      Ext.getCmp('west-panel').add(item2); 
      Ext.getCmp('west-panel').doLayout(); 
    }); 
    </script> 
</body> 
</html> 

답변

1

. Ext.onReady 코드로 인해 ExtJs 3을 사용하고 있다고 가정합니다.

처음 코드를 복사했을 때 탭 패널 중간에 Ext.create 사용과 관련하여 오류가 표시되어 패널을 제거 했으므로 기본 유형은 패널이므로이 작업이 필요하지 않습니다. 여전히 문제를 얻는 경우에 너무 세부 사항을 제공하고 I는 응답이 답변을 업데이트하시기 바랍니다 경우,이 코드를 시도하고 볼 수

Ext.onReady(function() { 

    var viewport = new Ext.Viewport({ 
     layout: 'border', 
     renderTo: Ext.getBody(), 
     items: [ 
      { 
       region: 'west', 
       id: 'west-panel', // see Ext.getCmp() below 
       layout: { 
        type: 'accordion', 
        titleCollapse: false, 
        animate: true, 
        activeOnTop: true 
       }, 
       title: 'West', 
       split: true, 
       width: 300, 
       minWidth: 175, 
       maxWidth: 400, 
       collapsible: false, 
       animCollapse: false, 
       margins: '0 0 0 5', 
       items: [{ 
        id: 'generalParam', 
        title: 'General Param', 
        iconCls: 'nav', 
        html: '<p>Panel content!</p>' 
       }, { 
        id: 'cardSetting', 
        title: "Card Settings", 
        iconCls: "settings", 
        html: '<p>Panel content!</p>' 
       }] 
      }, 
      { 
       region: 'center', // a center region is ALWAYS required for border layout 
       deferredRender: false, 
       items: [{ 
        bodyStyle: 'background-image:url(images/square.gif)', 
        html: 'Internal notes go here', 
        title: 'Welcome', 
        closable: true, 
        autoScroll: true 
       }] 
      } 
     ] 
    }); 


    var item1 = {id: 'cardSetting2', title: 'Card Settings2', iconCls: 'settings', html: '<p>Panel content!</p>'}; 
    var item2 = {title: 'new item 3', iconCls: 'crv', html: '<p>Panel content!</p>'}; 

    Ext.getCmp('west-panel').add(item1); 
    Ext.getCmp('west-panel').add(item2); 
    Ext.getCmp('west-panel').doLayout(); 
}); 

: 여기

내가 현재에 대한 테스트입니다 코드입니다. 프로젝트에 행운을 빌어 요.

EDIT 일 : 리스너 beforerender, 리스너를 추가 Sencha Fiddle

+0

안녕하십니까, 답장을 보내 주셔서 감사합니다. 문제는 여전히 동일하지만 추가 한 두 항목 (새 항목 3) 및 (카드 설정 2)의 접기 버튼이 작동하지 않아 내용이 잘못되었습니다. 표시되지 않습니다. 나는 EXTJS 버전 5를 사용하고 있음을 알리고 싶습니다. – khalid

+0

위의 문장에서 나는 아코디언에 4 개의 메뉴 항목이 있고 각각에 내용이 있습니까? 내가 겪고있는 문제에 대해 설명해 주시겠습니까? – Scriptable

+0

두 항목을 동적으로 추가했습니다 (항목 1과 항목 2). 문제는 내가 그들 중 누구도 내용을 볼 수 없다는 것입니다. 그 항목을 클릭하면 아무 일도 일어나지 않습니다. – khalid

0

나는 문제를 해결 한 작업보십시오 {beforerender : addAccordion} 아래와 같이 기능 addAccordion를 정의

VAR의 addAccordion을 = function() { var accordion_panel = Ext.getCmp ('west-panel'); var item1 = {id : '카드 설정', 제목 : '카드 설정', iconCls : '설정'}}; var item2 = {title : '새 항목', iconCls : 'crv'}; accordion_panel.add (item1); accordion_panel.add (item2); }; 감사합니다.

관련 문제