通常情況下,定義網格類型,我做這樣的事情:放過子組件的配置於母公司
Ext.define('MyApp.view.MyGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.myGrid',
store: 'MyStore',
columns: [...],
}
,然後我通過它的xtype,「myGrid」將它添加到一個容器或佈局。
我想要做的是定義一個可重複使用的自定義組件,它可以擴展Ext.grid.Panel
或接受相同的配置(如列),但實際上是一個包含網格和其他內容的容器。
Ext.define('MyApp.components.ContainedGrid', {
extend: 'Ext.container.Container' //or Ext.grid.Panel, whatever works
alias: 'widget.containedGrid',
layout: 'card',
items: [
{someObject}, //doesn't matter what this is
{aGrid}, //the grid that should receive the configs from the caller
],
}
在理想情況下,該組件可被配置像常規Ext.grid.Panel
對象,並且這些配置應真正適用於項目陣列中的第二所定義的網格。
換句話說,像下面這樣的東西應該呈現一個包含卡片佈局的窗口,其中第二張卡片應該是網格,並且提供給容器的列存儲在&。
Ext.create('Ext.window.Window', {
title: 'hi',
layout: 'fit',
items: {
xtype: 'containedGrid',
store: myStore,
columns: [...],
},
});
從邏輯上講,我只想說,提供給容器CONFIGS適用於它的組件之一,但我不知道如何來執行。有什麼想法嗎?
編輯: 要簡潔,我想要做的就是創建一個配置就像一個網格中的成分,但確實是包括電網,與一些其他的東西沿着容器。這個組件將被多次使用,所以我想將它打包爲可重用組件。
這似乎工作得很好。值得注意的一點是:1)我需要在gridCfg中設置一個itemId,以便控制器監聽#itemId的事件,因爲xtype'containedGrid'不會是唯一的,並且外部組件的xtype不會引用網格。 – romacafe
@romacafe好吧,沒有任何東西妨礙你這樣做。也許我沒有得到你,你認爲這有什麼不利之處?基本上你只需要提供一個唯一的路徑,只需要將itemId放在網格上,如果你有兩個在同一個容器中,否則我會嘗試識別容器。如果您想要使用該組件功能,則只需要itemId,否則您可以使用任何甚至自定義屬性進行查詢。 – sra
我不想聽起來不明白,這是非常有幫助的!最理想的解決方案將允許開發人員以完全*與標準網格相同的方式使用它,只改變xtype,但我覺得它不切實際。 (我想,你必須擴展網格,然後使用自己的佈局和/或項目集合,但我所有的嘗試迄今都沒有成功)。需要一個嵌套的配置和一個itemId是相對較小的讓步,而且我目前擁有最好的選擇。 – romacafe