我有一個返回一組物體的服務。一件事只需要一個id
和一個name
。我想加載到Ext.tree.Panel
。目前,我已經定義了一個模擬服務典型響應的數據存儲。你可以玩一個演示JSFiddle here。包括以下如何填充Ext.data.TreeStore沒有孩子或葉信息?
代碼以及:
Ext.define('Thing', {
extend: 'Ext.data.Model',
fields: ['id', 'name'],
});
var store = Ext.create('Ext.data.TreeStore', {
model: 'Thing',
// example service response (in reality, this would be JSON)
root: {
children: [
{
id: 1,
name: 'Thing 1',
},
{
id: 2,
name: 'Thing 2',
},
{
id: 3,
name: 'Thing 3',
},
],
},
listeners: {
append: function(thisNode, newChildNode, index, eOpts) {
if(!newChildNode.isRoot()) {
newChildNode.set('text', newChildNode.get('name'));
}
},
},
});
Ext.create('Ext.tree.Panel', {
renderTo: Ext.getBody(),
store: store,
rootVisible: false,
});
正如你所看到的,該服務僅返回一個東西的id
和name
,像children
或leaf
沒有樹節點信息,這是一個Ext.data.TreeStore
通常希望。
我根本無法改變服務作爲迴應返回的內容。我喜歡我可以調用服務並獲得一系列平面事物,而不需要額外的樹節點信息。有很多應用程序在與此服務交談時根本不需要這些數據,而且我沒有獲得權限的許可,即可以對其進行更改。
不幸的是,沒有在響應每一件事情中定義的children
元素,分機引發了以下錯誤,當我試圖展開節點(可以在的jsfiddle產生這樣自己):
Uncaught TypeError: Cannot call method 'indexOf' of undefined
所以,我的問題是:如何避免在我的回覆中發回children
(或leaf
)並解決此錯誤?我只想把我的東西加載到樹中並且可擴展(是的,它們不能成爲葉子)。