首先,我是 ExtJS 的新手。我需要你的帮助,让我知道获得包含 n 个递归项的树形菜单的最佳方法。 例如:
文件夹
..文件夹
....项目
....文件夹
......项目
......项目
....文件夹
...
我遵循 Sencha 提出的最佳实践。我能够用一个级别做一个树形菜单,但是当尝试为 n 个级别做它时,它失败了(事实上,该应用程序工作但显示第一级的无限节点)。显然问题出在我的菜单项的模型定义上,请参阅:
Ext.define('Dashboard.model.MenuItem',{
extend: 'Dashboard.model.AbstractMenuElement',
fields:
[
{name: 'content', type: 'string'},
{name: 'skeletonFlag', type: 'string'},
{name: 'fatherId', type: 'int'}
],
associations:
[
{type: 'hasMany', model: 'Dashboard.model.MenuItem', name: 'children', mapping: 'items'}
]
});
所以这个模型递归地创建无限节点。但是......你知道我应该如何为我的菜单项建模以实现递归菜单吗?
谢谢!
最佳答案
要在 Ext JS 中显示树状结构,我认为最好的办法是使用 Ext.model.TreeModel , Ext.model.TreeStore连同Ext.tree.Panel .
这是一个简单的例子来匹配你在问题中提到的结构:
Ext.create('Ext.tree.Panel', {
store: Ext.create('Ext.data.TreeStore', {
root: {
text: 'Root Folder',
expanded: true,
children: [
{text: 'Folder 1', children: [
{text: 'Item 1', leaf: true}
]},
{text: 'Folder 2', expanded: true, children: [
{text: 'Item 2', leaf: true},
{text: 'Item 3', leaf: true}
]},
{text: 'Folder 3', children: []}
]
}
}),
renderTo: Ext.getBody()
});
可以查看this example在 Plunker 上。
关于javascript - Ext JS 4.1 中的递归树形菜单结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12540001/