2017-04-06 85 views
1

我有一个模型,并在我的代码中存储。根据功能,我想从商店动态创建选项卡。你能分享代码片段吗?假设有相应的模型和商店。如何在ExtJS中动态创建标签面板?

+1

听取商店载入事件,建立你想添加的商品数组,在标签面板上调用'add()'。 –

回答

3

为此,您首先需要创建Tab平板

datatabpanel = Ext.create('Ext.tab.Panel', { 
       layout: 'card', 
      }), 

,然后里面标签面板您add你的元素。在这种情况下,我给出了添加网格到标签面板的例子。

我们首先使用Ajax进行响应,并从响应中构建网格。网格准备就绪后,我们将动态添加到选项卡面板。

load: function() { 
    var url = '', 
    proxyMethod = 'GET'; 
    url = SomeURL; 
    Ext.Ajax.request({ 
      url: url, 
      headers: { 
       "Accept": "application/json; charset=utf-8", 
       'X-HTTP-Method-Override': "PUT" 
      }, 
      success: function(res, args) { 
       var data = Ext.decode(res.responseText); 
       me.view.mainData = data; 
       if (data.ROOT.DATA) { 
        me.buildGrids(data.ROOT.DATA.D, data.ROOT.HEADER); 
       } 
      } 
     }) 
    } 




buildGrids: function(data, metaData) { 
     var p = this, 
      me = p.view, 
      cnt = me.down("container[name=gridtabs]"), // This is your container where you placing your grid. You named that as gridtabs. 
      datatabpanel = Ext.create('Ext.tab.Panel', { 
       layout: 'card', 
      }), 
      newdatagrids = []; 
     data = Ext.isObject(data) ? [data] : data; 
     for (var i = 0; i < data.length; i++) { 
      var value = data[i].NAME; // You can extract from your attributes. 
      var datasetgrids = Ext.create({ 
       xtype: 'SomeGrid', 
       storeXml:{"ROOT":{ "DATA":data[i],"HEADER":metaData}}, // This is also depended on how to data is coming. 
       gridId: data[i]["ID"], 
      }); 
      newdatagrids.push(datasetgrids); 
     } 
     cnt.removeAll(); 
     datatabpanel.add(newdatagrids); 
     datatabpanel.setActiveTab(0); 
     cnt.add(datatabpanel); 
    }, 

在代码中你可以看到,我们正在创建一个阵列newdatagrids,然后通过使用newdatagrids.push(datasetgrids);

一旦我newdatagrids准备好我正在使用datatabpanel.add(newdatagrids);添加此我一个tabpanel puting我网到这个阵列。

注意:这只是示例代码。您必须根据您的要求制作/更改/修改此类代码。

还有很多很好的例子在文档中给出。请看一看。 Doc

+0

没有“滚动”配置。此外,选项卡面板默认为卡片布局,指定适合度充其量是多余的。此外,维护配置对象并推迟所有这些会增加时间。 –

+0

@EvanTrimboli注意。谢谢你指出这一点。 。在编写此代码时没有检查过该文档。我只是假定了预定义。是的..那会更好,我只是给出了一个想法,并专注于事情的工作方式。将来我会牢记这些观点。 – UDID