java如何实现extjs组装树形菜单

 我来答
cqh46
2013-12-18 · TA获得超过3292个赞
知道大有可为答主
回答量:2149
采纳率:100%
帮助的人:1269万
展开全部
    var tabs = Ext.create('Ext.tab.Panel', {
        region : 'center'
    });
    
    var store = Ext.create('Ext.data.TreeStore', {
    root : {
        expanded : true,
            children : [{
            text : '应用程序管理',
            expanded : true,
                children : [{
                    text : '应用程序管理',
                    id : 'appManage',
                    leaf : true
                }]
                }, {
                    text : '页面配置管理',
                    expanded : true,
                    children : [{
                        text : '页面配置管理',
                        id : 'configManage',
                        leaf : true
                }, {
                    text : ' 页面按钮配置',
                    id : 'buttonManage',
                    leaf : true
                }]
                }, {
                    text : '用户管理',
                    expanded : true,
                    children : [{
                        text : '用户管理',
                        id : 'userManage',
                        leaf : true
                }, {
                    text : '权限管理',
                    id : 'rowManage',
                    leaf : true
                }]
                }, {
                    text : '任务管理',
                    expanded : true,
                    children : [{
                        text : '任务管理',
                        id : 'taskMange',
                        leaf : true
            }]
        }]
    }
    });
    
    var treePanelApp = Ext.create('Ext.tree.Panel', {
        id : 'tree-panel',
        title : '菜单',
        region : 'west',
        collapsible : true,
        split : true,
        height : 360,
        width : 170,
        rootVisible : false,
        store : store
    });
    
    var tabMap = new Ext.util.HashMap();
    treePanelApp.on('itemclick', function(view, record, item, index, e,
    eOpts) {
    if (record.get('leaf')) {
        var id = record.getId();
        var text = record.get('text');
        var hasTab = tabMap.get(id);
        console.log(hasTab);
        if (!hasTab) {
        var t;
        if (id == 'appManage') {
        t = tabs.add({
        id : id,
        title : record.get('text'),
        closable : true,
        items : [{
        xtype : 'panel'
        }]
        });
        } else if (id == 'configManage') {
        t = tabs.add({
        id : id,
        title : record.get('text'),
        closable : true,
        items : [{
        xtype : 'panel'
        }]
        });
        
        } else if (id == 'buttonManage') {
        t = tabs.add({
        id : id,
        title : record.get('text'),
        closable : true,
        items : [{
        xtype : 'panel'
        }]
        });
        
        } else if (id == 'userManage') {
        t = tabs.add({
        id : id,
        title : record.get('text'),
        closable : true,
        items : [{
        xtype : 'panel'
        }]
        });
        
        } else if (id == 'rowManage') {
        t = tabs.add({
        id : id,
        title : record.get('text'),
        closable : true,
        items : [{
        xtype : 'panel'
        }]
        });
        
        } else if (id == 'taskMange') {
        t = tabs.add({
        id : id,
        title : record.get('text'),
        closable : true,
        items : [{
        xtype : 'panel'
        }]
        });
        
        }
        
        t.on('close', function(tab, eps) {
        tabMap.removeAtKey(tab.getId());
        })
        tabMap.add(id, t);
        
        }
        tabs.setActiveTab(id);
    }
    });
    
    Ext.create('Ext.container.Viewport', {
        layout : 'border',
        items : [treePanelApp, tabs]
    });
});

页面效果:


如果是固定的菜单,就用不着java 后台了。

要是动态的菜单的话就返回一个 父子类型的 json 数据即可

[

    {

        text : '页面配置管理',

        expanded : true,

        children : [{

        text : '页面配置管理',

        id : 'configManage',

        leaf : true }]

    }

]

郭某人来此
2015-10-06 · TA获得超过1645个赞
知道答主
回答量:952
采纳率:100%
帮助的人:89.6万
展开全部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

var tabs = Ext.create('Ext.tab.Panel', {
region : 'center'
});

var store = Ext.create('Ext.data.TreeStore', {
root : {
expanded : true,
children : [{
text : '应用程序管理',
expanded : true,
children : [{
text : '应用程序管理',
id : 'appManage',
leaf : true
}]
}, {
text : '页面配置管理',
expanded : true,
children : [{
text : '页面配置管理',
id : 'configManage',
leaf : true
}, {
text : ' 页面按钮配置',
id : 'buttonManage',
leaf : true
}]
}, {
text : '用户管理',
expanded : true,
children : [{
text : '用户管理',
id : 'userManage',
leaf : true
}, {
text : '权限管理',
id : 'rowManage',
leaf : true
}]
}, {
text : '任务管理',
expanded : true,
children : [{
text : '任务管理',
id : 'taskMange',
leaf : true
}]
}]
}
});

var treePanelApp = Ext.create('Ext.tree.Panel', {
id : 'tree-panel',
title : '菜单',
region : 'west',
collapsible : true,
split : true,
height : 360,
width : 170,
rootVisible : false,
store : store
});

var tabMap = new Ext.util.HashMap();
treePanelApp.on('itemclick', function(view, record, item, index, e,
eOpts) {
if (record.get('leaf')) {
var id = record.getId();
var text = record.get('text');
var hasTab = tabMap.get(id);
console.log(hasTab);
if (!hasTab) {
var t;
if (id == 'appManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});
} else if (id == 'configManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'buttonManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'userManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'rowManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'taskMange') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

}

t.on('close', function(tab, eps) {
tabMap.removeAtKey(tab.getId());
})
tabMap.add(id, t);

}
tabs.setActiveTab(id);
}
});

Ext.create('Ext.container.Viewport', {
layout : 'border',
items : [treePanelApp, tabs]
});
});

页面效果:

如果是固定的菜单,就用不着java 后台了。
要是动态的菜单的话就返回一个 父子类型的 json 数据即可
[
{
text : '页面配置管理',
expanded : true,
children : [{
text : '页面配置管理',
id : 'configManage',
leaf : true }]
}
]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
2015-09-10 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:112万
展开全部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

var tabs = Ext.create('Ext.tab.Panel', {
region : 'center'
});

var store = Ext.create('Ext.data.TreeStore', {
root : {
expanded : true,
children : [{
text : '应用程序管理',
expanded : true,
children : [{
text : '应用程序管理',
id : 'appManage',
leaf : true
}]
}, {
text : '页面配置管理',
expanded : true,
children : [{
text : '页面配置管理',
id : 'configManage',
leaf : true
}, {
text : ' 页面按钮配置',
id : 'buttonManage',
leaf : true
}]
}, {
text : '用户管理',
expanded : true,
children : [{
text : '用户管理',
id : 'userManage',
leaf : true
}, {
text : '权限管理',
id : 'rowManage',
leaf : true
}]
}, {
text : '任务管理',
expanded : true,
children : [{
text : '任务管理',
id : 'taskMange',
leaf : true
}]
}]
}
});

var treePanelApp = Ext.create('Ext.tree.Panel', {
id : 'tree-panel',
title : '菜单',
region : 'west',
collapsible : true,
split : true,
height : 360,
width : 170,
rootVisible : false,
store : store
});

var tabMap = new Ext.util.HashMap();
treePanelApp.on('itemclick', function(view, record, item, index, e,
eOpts) {
if (record.get('leaf')) {
var id = record.getId();
var text = record.get('text');
var hasTab = tabMap.get(id);
console.log(hasTab);
if (!hasTab) {
var t;
if (id == 'appManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});
} else if (id == 'configManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'buttonManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'userManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'rowManage') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

} else if (id == 'taskMange') {
t = tabs.add({
id : id,
title : record.get('text'),
closable : true,
items : [{
xtype : 'panel'
}]
});

}

t.on('close', function(tab, eps) {
tabMap.removeAtKey(tab.getId());
})
tabMap.add(id, t);

}
tabs.setActiveTab(id);
}
});

Ext.create('Ext.container.Viewport', {
layout : 'border',
items : [treePanelApp, tabs]
});
});

页面效果:

如果是固定的菜单,就用不着java 后台了。
要是动态的菜单的话就返回一个 父子类型的 json 数据即可
[
{
text : '页面配置管理',
expanded : true,
children : [{
text : '页面配置管理',
id : 'configManage',
leaf : true }]
}
]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式