Sencha Ext.tree.Panel(Classic)

2024. 3. 31. 22:45Javascript/Sencha

# tree 소스
Ext.define('Home.view.menu.LeftMenu', {
    extend: 'Ext.tree.Panel',
    // alias 정의 없이 다른 곳에서 'leftmenu'로 찾으면 아래와 같은 에러 발생
    // Uncaught Error: [Ext.create] Unrecognized class name / alias: widget.leftmenu
    alias: 'widget.leftmenu',
    controller: 'leftmenu',

    width: 200,
    title: '메뉴',
    // root 보이지 않도록 설정
    rootVisible: false,
    // name 필드를 출력되도록 설정
    displayField: 'name',
    store: {
    	// type은 아직 모르겠음
        type: 'tree',
        // json에서 가져올 field 정의
        fields: ['name', 'url'],
        proxy: {
            type: 'ajax',
            url: Ext.Boot.baseUrl + 'resources/json/menu/menu.json',
            reader: {
                type: 'json'
            }
        },
        autoLoad: true
    },
    listeners: {
    	// 화면 구성시 바로 펼쳐지도록 설정
        afterrender: function(treePanel) {
            treePanel.expandAll();
        },
        itemclick: 'onMenuClick'
    }
})

# menu.json
# json 구조가 맞지 않으면 로딩 표시만 잠깐 되고, 화면에 tree가 안나옴
# leaf 정의를 꼭해줘야 함
{
    "children": [
        {"name": "화면", "url": "", "leaf": false,
            "children": [
                {"name": "화면1-1", "url": "Home.view.main.List", "leaf": true},
                {"name": "화면1-2", "url": "Home.view.cust.CustInfo", "leaf": true},
                {"name": "화면1-3", "url": "Home.view.cust.CustInfo", "leaf": true}
            ]
        },
        {"name": "화면2", "url": "", "leaf": true}
    ]
}

 

'Javascript > Sencha' 카테고리의 다른 글

Sencha ajax progress  (0) 2024.04.08
Sencha Message 처리  (0) 2024.04.01
Sencha 다른 resource 참조  (0) 2024.03.31
Sencha Tip  (0) 2024.03.30
Sencha Trouble Shooting  (0) 2024.03.30