javascript - Ext JS 4.1 中的递归树形菜单结构

标签 javascript menu extjs

首先,我是 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/

相关文章:

php - 使用 JavaScript 重定向到 PHP 脚本中的动态 href

javascript - 使用三足身份验证进行 SignNow 集成时管理缓存

android - 如何将项目添加到子菜单中的组

html - 用于导航菜单的 Internet Explorer 内联列表

javascript - JS文件乱序

javascript - Firebase Cloud Functions https.onCall 已完成,状态代码为 : 204

wpf - 在 WPF 中的菜单中放置分割线

extjs - ExstJs Store 回调正确的错误处理

javascript - %= 和 |= 查询运算符,Ext JS

javascript - Ext.msg.Alert 将文本消息居中对齐