在前端開發中,我們經常會用到樹形結構的數據展示,而Ext JS就提供了非常實用的Ext.tree.TreePanel組件,可以快速構建一棵樹形結構并進行數據展示和操作,而Ext.tree.JsonReader則是用來解析從后端獲取到的json數據并創建樹形結構的組件。
Ext.tree.JsonReader的使用非常簡單,我們只需要在Ext.tree.TreePanel組件中指定reader為Ext.tree.JsonReader,并在reader中設置一些必要的參數,就可以將json數據轉化為樹形結構。以下是一個簡單的例子:
var store = Ext.create('Ext.data.TreeStore', { proxy: { type: 'ajax', url: 'tree-data.json' }, reader: { type: 'json' }, root: { text: 'Root', id: 'root', expanded: true } }); Ext.create('Ext.tree.Panel', { title: 'Tree Example', width: 500, height: 400, store: store, rootVisible: false, renderTo: Ext.getBody() });
在上面的例子中,我們使用Ext.data.TreeStore來存儲json數據,通過type為ajax的proxy指定后端獲取數據的url。在reader中,我們將type設置為json,讓Ext.tree.JsonReader來解析json數據。在樹形結構的根節點中,我們設置了text、id、expanded等屬性。 需要注意的是,Ext.tree.JsonReader默認會解析json數據中的id、text、leaf等屬性,如果后端返回的json數據中沒有這些屬性,我們需要在JsonReader中設置對應的字段名。例如,在下面的json數據中,我們可以通過Ext.tree.JsonReader設置id為'id',text為'name'。
{ "name": "Root", "children": [ { "id": "child1", "name": "Child 1", "leaf": true }, { "id": "child2", "name": "Child 2", "children": [ { "id": "child3", "name": "Child 3", "leaf": true } ] } ] }
綜上所述,使用Ext.tree.JsonReader解析json數據并創建樹形結構非常方便,只需要少量簡單的配置就可以完成。在實際開發中,我們可以根據自己的需求設置不同的參數,從而滿足不同的業務場景。