2012-07-10 54 views
0

我有一個嵌套數據的樹型數據結構。ExtJS 4.1 TreeStore中的不同節點類型

TreeNodes和DataNodes。就像在文件系統中一樣,TreeNodes是文件夾,DataNode是文件。

但JSON的結構是這樣的:

 
{ 
    name: 'root', 
    data: [ 
    [a, b, 100, 23], 
    [a, b, 100, 23], 
    [a, b, 100, 23] 
    ... 
    ] 
    children: [ 
    { 
     name: 'child1', 
     data: [...], 
     children: [...] 
    }, 
    { 
     name: 'child2', 
     data: [...], 
     children: [...] 
    }, 
    ... 
    ] 
} 

我想給孩子樹節點和數據數組解析到的DataNodes,並在一個TreeStore使用它們。

這可能嗎?

ATM我得到了TreeNodes,每個Tree節點都有一個關於它的數據記錄的關聯,這是一個次優解決方案。

回答

1

我也有類似的情況。你需要做的是創建一個包含兩種數據類型的模型類(提取重疊屬性)。就樹存儲而言,它不會區分記錄類型,但是您可以通過圖標自定義樹的外觀,以便爲每種記錄類型提供獨特的外觀。數據必須相同,例如,兩個記錄類型的Name屬性必須相同。

由於來自服務器響應的JSON結構有點奇怪,因此您必須自己解析並構造treestore期望的結構。或者,你需要控制你的服務器端實現並在那裏調整它。

+0

正如我所料......無論如何,謝謝你。如何配置TreeStore來將'data'和'childrend'解析爲子節點? – 2012-07-10 21:59:49

+1

你真的不能配置它來做到這一點。因爲你必須指定你的數據的根源在哪裏。兒童預計在默認情況下。你可以做的是通過遍歷jSOn數組創建自己的結構,並創建從NodeInterface擴展的模型實例。 – dbrin 2012-07-11 00:10:42

+0

不是我希望的答案,但謝謝。 – 2012-07-11 09:35:29