2011-09-06 47 views
0

一個ExtJS組件(讓它是組件A)被呈現給某個DOM元素。這個DOM元素本身後來被用於其他一些EXtJS組件(componentB)的contentEl。如何找到最接近的父組件?

什麼是最簡單的方法來找出componentA是爲某些元素呈現的,而這些元素又被某個componentB使用。簡單來說,有沒有像jquery最接近的東西,但因爲我們有組件而不是DOM元素?

UPD:我知道所謂的ComponentQuery語言和up方法,我有一種強烈的感覺,解決方案是什麼地方接近,但我就是想不通,究竟是可以做到的。 'up'方法的問題,據我所知,它實際上是測試直接聲明的祖先鏈。 「直接導向」是指每個新組件都直接作爲子項插入其父項。就我而言,這條鏈條被打破了。

+1

你檢查了Ext.ComponentQuery嗎? http://docs.sencha.com/ext-js/4-0/#!/api/Ext.ComponentQuery –

+0

@amol,謝謝,是的,我實際上假設答案在ComponentQuery的某個地方,但無法弄清楚,我如何匹配父容器。 – shabunc

回答

2

我覺得你必須回退到DomQuery,並簡單地檢查DOM節點是否包含一個帶有可疑組件應該生成的類名的div。這是一個黑客,但你在做什麼看起來也像一個黑客。

也許你可以用不同的方式構造你的東西,以便孩子組件以某種方式向父母註冊自己。如果不知道具體情況,很難提出多少建議。

+0

請問你能否更詳細地描述你的想法。所以,你想找到DOM元素,然後找到相關的組件。第一步對我來說很明顯,第二步,並不那麼明顯。關於我的頭,我可以想象下面 - 我們找到DOM元素,並獲得一些數據,這些數據早已與此元素相關聯。使用這些數據(最簡單的形式,它可以只是一個組件ID),我們找到合適的組件。 – shabunc

+1

您只需查找組件的根元素,獲取其ID並將ID傳遞給Ext.getCmp()即可獲取組件。 –