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

实现“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日

相关文章

  • maven打包时候修改包名称带上git版本号和打包时间方式

    按照要求,我会为你提供一个完整的Maven项目中如何在打包时修改包名称带上git版本号和打包时间的攻略。 概述: Maven利用pom.xml文件管理项目信息和依赖,pom.xml文件中通过使用插件来执行相关的动作操作。在这里,我们需要用到maven-jar-plugin插件来进行Maven项目的打包操作。通过重写 ${project.build.final…

    Java 2023年5月19日
    00
  • Java实现几十万条数据插入实例教程(30万条数据插入MySQL仅需13秒)

    这篇文章主要介绍如何使用Java实现大批量数据插入到MySQL数据库中,并给出了具体实现的教程和示例代码。下面是详细的攻略流程: 1. 数据准备 首先需要准备数据,可以是一组代表性数据样例集或随机生成的大规模数据,此处以随机生成数据为例。可以使用Java中的Random类来生成随机数据。 2. MySQL数据库连接 使用Java语言连接MySQL数据库,这里…

    Java 2023年6月1日
    00
  • Java数组的去重

    Java数组去重是一个非常基础和常见的操作,本文将介绍两种常见的去重方法:使用Set去重和使用Stream去重。 使用Set去重 使用Set来去重是最为常见的一种方式,其原理很简单,就是将数组转换为Set,再将Set转换为数组即可。 示例代码如下: public static int[] removeDuplicates(int[] arr) { Set&l…

    Java 2023年5月26日
    00
  • Java File类的常用方法总结

    如果你需要使用Java程序中的文件操作功能,那么File类就是你需要用的类。本文通过对Java File类的常用方法进行总结来给你提供一份完整的攻略。 File类的常用方法 下面我们对File类的常用方法进行调查总结。 创建File对象 我们可以使用下面的代码来创建File对象。 File file = new File("文件路径");…

    Java 2023年6月1日
    00
  • 实现将Web应用部署到Tomcat根目录的三种方法

    当我们开发一个Web应用并且想要将其部署到Tomcat服务器的根目录时,可以采用以下三种方法: 方法一:部署WAR包到Tomcat的webapps目录下 使用Maven或Gradle等构建工具将Web应用打包成WAR包,或手动打包成WAR包。 将WAR包重命名为ROOT.war,并将其复制到Tomcat的webapps目录下。 启动Tomcat服务器,Tom…

    Java 2023年5月19日
    00
  • Java多线程之多种锁和阻塞队列

    Java多线程之多种锁和阻塞队列 前言 在Java语言中,多线程编程经常涉及到线程的同步和互斥操作,为了实现这些操作,需要使用各种不同的锁和阻塞队列。本文将介绍Java多线程中几种常见的锁和阻塞队列的使用方法,并给出相应的示例说明。 可重入锁(ReentrantLock) 可重入锁是一种可重入的互斥锁,可以使线程在获得锁的情况下,多次调用同步方法而不产生死锁…

    Java 2023年5月18日
    00
  • JAVA多线程之方法 JOIN详解及实例代码

    JAVA多线程之方法 JOIN详解及实例代码 什么是JOIN方法? 在Java多线程中,Join方法是Thread类提供的一种方法。用于主线程等待子线程执行完毕后再执行,即实现主线程对于子线程的加入(join)操作。 JOIN方法的语法 在Java多线程中,join方法的语法如下: public final void join() throws Interr…

    Java 2023年5月18日
    00
  • springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

    下面详细讲解一下如何使用Spring Boot、IDEA和Maven搭建多模块项目并连接数据库测试。 环境准备 在开始之前,确保你已经安装了以下环境: JDK 1.8或以上版本 IDEA集成开发环境 Maven构建工具 数据库(本次示例使用MySQL) 创建Maven多模块项目 打开IDEA,点击File -> New -> Project,选择…

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