Extjs中通过Tree加载右侧TabPanel具体实现

yizhihongxing

实现“Extjs中通过Tree加载右侧TabPanel”需要以下步骤:

  1. 创建一个Ext.tree.Panel,用于显示树形结构,其中需要配置store,root等属性。

示例代码:

Ext.create('Ext.tree.Panel', {
  store: yourTreeStore,
  root: {
    text: 'Root',
    expanded: true,
    children: yourTreeData
  },
  listeners: {
    itemclick: function(tree, node) {
      // TODO: load tab panel based on selected node
    }
  }
});

其中,yourTreeStore指定了树形结构的数据源,yourTreeData指定了树形结构的初始数据,itemclick事件监听器可以在树节点被点击时触发,并执行加载右侧TabPanel的操作。

  1. 创建一个Ext.TabPanel,用于显示右侧的Tab。在itemclick事件监听器中,可以通过add()方法向TabPanel中添加新的Tab,并指定Tab所需的配置信息。在TabPanel中加载组件时,可以使用Ext.ComponentQuery查找已注册的组件,或者使用直接创建组件对象的方式。

示例代码:

var tabPanel = Ext.create('Ext.TabPanel', {
  items: [
    {
      title: 'Tab 1',
      html: 'Content of Tab 1'
    }
  ]
});

Ext.create('Ext.tree.Panel', {
  store: yourTreeStore,
  root: {
    text: 'Root',
    expanded: true,
    children: yourTreeData
  },
  listeners: {
    itemclick: function(tree, node) {
      if (node.get('leaf')) {
        var id = node.get('id');
        var title = node.get('text');
        var tab = tabPanel.child('#tab_' + id);

        if (!tab) {
          tab = tabPanel.add({
            xtype: 'panel',
            title: title,
            closable: true,
            id: 'tab_' + id,
            html: 'Loading ' + title + '...'
          });

          var panel = Ext.create(node.get('xtype'), node.get('config'));

          // Load content of tab
          tab.setLoading(true);
          panel.on('afterrender', function() {
            tab.setLoading(false);
            tab.add(panel);
          });
        }

        tabPanel.setActiveTab(tab);
      }
    }
  }
});

在上述示例代码中,我们先创建一个TabPanel,并添加了一个默认的Tab。在itemclick事件监听器中,我们在用户首次点击一个节点时创建新的Tab,并向Tab中添加组件。如果用户再次点击相同的节点,则直接激活该Tab,而不是再次创建新的Tab。在创建Tab时,我们设置了closable属性为true,允许用户关闭Tab。在加载Tab的内容时,我们使用了setLoading(true)setLoading(false)方法来显示和隐藏Tab的加载状态。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Extjs中通过Tree加载右侧TabPanel具体实现 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Spring boot整合mybatis实现过程图解

    首先我们来讲解一下Spring Boot整合Mybatis的基本过程和步骤: 1. 引入相关依赖 首先我们需要在我们的pom.xml文件中引入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…

    Java 2023年5月19日
    00
  • Spring之WEB模块配置详解

    Spring之WEB模块配置详解攻略 1. 概述 Spring作为一个开源框架,提供了很多方便的功能来支持Web应用程序的开发。Spring Web模块提供了丰富的功能,比如控制器、视图解析器、数据绑定、数据验证、拦截器等,通过这些功能可以极大地简化Web应用程序的开发。 在本文中,我们将详细讲解Spring Web模块的配置方法,包括依赖配置、控制器配置、…

    Java 2023年5月19日
    00
  • Java复制(拷贝)数组的五种方法汇总

    Java复制(拷贝)数组的五种方法汇总 一、使用for循环逐一复制 这是最基本的数组复制方法,适用于任何类型的数组。代码示例如下: int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = new int[arr1.length]; // 创建空数组,长度等于原数组 for (int i = 0; i < arr1.leng…

    Java 2023年5月26日
    00
  • Hibernate中Session.get()方法和load()方法的详细比较

    让我来详细讲解“Hibernate中Session.get()方法和load()方法的详细比较”。 一、概述 Hibernate是广泛使用的ORM框架之一,其最基本的操作是通过Session实例来执行。在Session实例中,get()方法和load()方法是最常用的两个方法之一。它们用于从数据库中检索对象,但它们有一些微小的区别。 在这篇文章中,我们将会比…

    Java 2023年5月20日
    00
  • SpringBoot Starter机制及整合tomcat的实现详解

    下面我将详细讲解“SpringBoot Starter机制及整合tomcat的实现详解”。 SpringBoot Starter机制 什么是Starter? 在Spring Boot中,Starter是指用于快速启动某一技术栈的依赖包,通过引入Starter,开发人员可以非常方便地引入一整套封装好的技术栈。 例如,我们想要应用JDBC来实现数据库操作,只需要…

    Java 2023年5月19日
    00
  • Security 登录认证流程详细分析详解

    下面是关于“Security 登录认证流程详细分析详解”的完整攻略。 背景 对于安全性要求较高的网站,通常需要用户进行身份认证才能访问特定功能或资源。本文将详细分析常见的登录认证流程,以及如何使用Spring Security实现这些流程。 登录认证流程 通常的登录认证流程可分为以下几步: 用户在前端页面输入用户名和密码,并提交表单。 服务器接收到表单数据后…

    Java 2023年5月20日
    00
  • java实体对象与Map之间的转换工具类代码实例

    下面是关于“java实体对象与Map之间的转换工具类代码实例”的完整攻略: 一、概述 在Java开发中,经常需要将Java实体对象转换为Map对象,或者将Map对象转换为Java实体对象。这时候,我们可以借助工具类来实现转换功能。本文将介绍如何编写一个通用的工具类,实现Java实体对象与Map之间的转换。 二、实现步骤 1.定义Java实体对象和Map对象 …

    Java 2023年5月26日
    00
  • Springboot 2.x集成kafka 2.2.0的示例代码

    下面我会详细讲解Springboot 2.x集成Kafka 2.2.0的示例代码的完整攻略。 前置条件:1. 已安装JDK和Maven;2. 已安装并起动好Zookeeper和Kafka。 步骤一:创建Springboot项目1. 打开IDEA,在左侧导航栏中选择New Project;2. 在弹出对话框中选择Spring Initializr,点击Next…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部