ext左侧树形菜单交替的实现

简介:

进入页面默认画面,如下图
_
点击组织按钮,左侧树形菜单被改变,如下图
_
再次点击代理店按钮,再次发生变化,如下图
_

实现的结构如下:
_
实现的代码如下:
ViewPort代码

Ext.define('MyApp.view.MainVP', {
    extend: 'Ext.container.Viewport',
    alias: 'widget.mainvp',

    requires: [
        'Ext.toolbar.Toolbar',
        'Ext.button.Button',
        'Ext.tree.Panel',
        'Ext.tree.View'
    ],

    layout: 'border',

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'panel',
                    region: 'north',
                    height: 115,
                    itemId: 'topPanel',
                    title: '网站工具栏',
                    dockedItems: [
                        {
                            xtype: 'toolbar',
                            dock: 'bottom',
                            itemId: 'topToolBar',
                            items: [
                                {
                                    xtype: 'button',
                                    itemId: 'agentBTN',
                                    text: '代理店'
                                },
                                {
                                    xtype: 'button',
                                    itemId: 'orgBTN',
                                    text: '组织'
                                }
                            ]
                        }
                    ]
                },
                {
                    xtype: 'treepanel',
                    region: 'west',
                    itemId: 'leftTreeMenu',
                    width: 150,
                    title: '导航栏',
                    store: 'LeftAgentStore',
                    viewConfig: {

                    }
                },
                {
                    xtype: 'treepanel',
                    region: 'west',
                    hidden: true,
                    itemId: 'leftOrgMenu',
                    width: 150,
                    title: '英格拉姆',
                    store: 'LeftOrgStore',
                    viewConfig: {

                    }
                }
            ]
        });

        me.callParent(arguments);
    }

});

预计被另一个菜单按钮点击所弹出的window页面,这里并没有调用只是把代码罗列出来

Ext.define('MyApp.view.addNewCar', {
    extend: 'Ext.window.Window',
    alias: 'widget.addnewcar',

    requires: [
        'Ext.form.field.Text',
        'Ext.panel.Panel'
    ],

    height: 610,
    itemId: 'newCar',
    width: 628,
    title: '新增车型',
    modal: true,

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'textfield',
                    fieldLabel: '产品',
                    emptyText: 'JSB_TESTLIB'
                },
                {
                    xtype: 'panel',
                    frame: true,
                    resizable: true,
                    collapsible: true,
                    title: '属性'
                }
            ]
        });

        me.callParent(arguments);
    }

});

第一棵树的store

Ext.define('MyApp.store.LeftAgentStore', {
    extend: 'Ext.data.TreeStore',

    requires: [
        'Ext.data.Field'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            storeId: 'LeftAgentStore',
            root: {
                text: '产品',
                expanded: true,
                children: [
                    {
                        text: 'Honda',
                        expanded: true,
                        children: [
                            {
                                text: '雅阁',
                                leaf: true
                            },
                            {
                                text: '思域',
                                leaf: true
                            }
                        ]
                    },
                    {
                        text: 'Benz',
                        expanded: true,
                        children: [
                            {
                                text: 'S系列',
                                leaf: true
                            },
                            {
                                text: 'C系列',
                                leaf: true
                            }
                        ]
                    }
                ]
            },
            fields: [
                {
                    name: 'text'
                }
            ]
        }, cfg)]);
    }
});

第二颗树的store

Ext.define('MyApp.store.LeftOrgStore', {
    extend: 'Ext.data.TreeStore',

    requires: [
        'Ext.data.Field'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            storeId: 'LeftOrgStore',
            root: {
                text: '组织',
                expanded: true,
                children: [
                    {
                        text: '用户',
                        leaf: true
                    },
                    {
                        text: '角色',
                        leaf: true
                    },
                    {
                        text: '实用程序',
                        leaf: true
                    }
                ]
            },
            fields: [
                {
                    name: 'text'
                }
            ]
        }, cfg)]);
    }
});

controller

Ext.define('MyApp.controller.TopController', {
    extend: 'Ext.app.Controller',

    refs: [
        {
            ref: 'leftTreeMenuRef',
            selector: 'mainvp #leftTreeMenu'
        },
        {
            ref: 'leftOrgMenuRef',
            selector: 'mainvp #leftOrgMenu'
        }
    ],

    agentBTNFunction: function(target) {

        //var carabc = Ext.create("widget.addnewcar");

        //carabc.show();
        var leftAgent = this.getLeftTreeMenuRef(),
        leftOrg = this.getLeftOrgMenuRef();

        leftAgent.show();
        leftOrg.hide();


    },

    orgBTNFunction: function(target) {
                var leftAgent = this.getLeftTreeMenuRef(),
                leftOrg = this.getLeftOrgMenuRef();

                leftAgent.hide();
                leftOrg.show();
    },

    init: function(application) {
        this.control({
            "mainvp #agentBTN": {
                click: this.agentBTNFunction
            },
            "mainvp #orgBTN": {
                click: this.orgBTNFunction
            }
        });
    }

});

结束

目录
相关文章
|
27天前
|
前端开发 JavaScript
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
本文介绍了如何在Vue3项目中实现一个鼠标拖动调整元素宽度的功能,并展示了点击按钮收起或展开侧边栏的效果,提供了完整的实现代码和操作演示。
218 0
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
UG02界面定制---左上角点击文件新建,选择做靠边栏倒数第三个Content是,选择它的基本功能,UG不想要工具栏,可以拖动删除它,最上方工具栏有定制,Ctrl + 1,文字在定制的文本,右键加命令
UG02界面定制---左上角点击文件新建,选择做靠边栏倒数第三个Content是,选择它的基本功能,UG不想要工具栏,可以拖动删除它,最上方工具栏有定制,Ctrl + 1,文字在定制的文本,右键加命令
|
2月前
|
前端开发 JavaScript
【定制需求】el-tree 树形控件实现:每级可单独选择,选择父级不选中子集,子集全部选中不自动选中父级,手写按钮可支持子集全选,以及取消子集全选,el-tree 树形控件取消父子级联动选择
【定制需求】el-tree 树形控件实现:每级可单独选择,选择父级不选中子集,子集全部选中不自动选中父级,手写按钮可支持子集全选,以及取消子集全选,el-tree 树形控件取消父子级联动选择
142 0
vitepress如何配置右上角的小两侧标志,利用nav标签进行修改,右侧边栏如何设置成自动弹出水平框,让原先隐藏的框能够显示出来
vitepress如何配置右上角的小两侧标志,利用nav标签进行修改,右侧边栏如何设置成自动弹出水平框,让原先隐藏的框能够显示出来
|
11月前
13zTree - 展开 / 折叠父节点控制
13zTree - 展开 / 折叠父节点控制
40 0
13zTree - 展开 / 折叠父节点控制
|
10月前
|
JSON JavaScript 前端开发
JS实现树形菜单递归函数(折叠菜单)
JS实现树形菜单递归函数(折叠菜单)
49 0
|
10月前
解决uviewui向下展开菜单u-dropdown组件收起样式层叠问题
解决uviewui向下展开菜单u-dropdown组件收起样式层叠问题
|
11月前
39zTree - 单击展开/折叠节点
39zTree - 单击展开/折叠节点
49 0
|
JSON JavaScript 数据格式
layui 树形表格 treeTable使用详细指南,不能折叠解决办法
layui 树形表格 treeTable使用详细指南,不能折叠解决办法
615 0
layui 树形表格 treeTable使用详细指南,不能折叠解决办法
ElementUI导航菜单嵌套多级折叠面板的小箭头图标bug
ElementUI导航菜单嵌套多级折叠面板的小箭头图标bug
ElementUI导航菜单嵌套多级折叠面板的小箭头图标bug