`

extjs自定义控件(二)

 
阅读更多

//使用继承方式
// apply(将一个对你复制到另一个对象)与applyIf(将一个对象复制到另一个对象,但重复的不复制)
// apply(a, b) 与 applyIf(a, b)
// 子类.superclass.constructor.call(this, {(基类构造函数)(配置)参数});---调用基类的构造函数,把参数传给基类的构造函数
//this表示什么得看Ext.extend继承的基类是什么;
//如:子类.superclass.constructor.call(this, {title: '继承', width: 200, height:300});
// Ext.extend(子类,基类,{操作(方法)})
//如:Ext.extend(子类,基类,{
 //      click: function(){

//       },
//       dbclick: function(){

//       }
//    })--这样子类的实例对象就可以访问这些方法;

//创建一个面板,继承于Ext.Panel,并接收一个参数
var Panel = function (config) {
    config = config || {};
    var _config = Ext.applyIf({
        layout: 'accordion',
        region: 'west',
        split: true,
        width: 200,
        collapsible: true,
        animate: true
    }, config); //把传进来的参数复制到上面去,重复的不复制
    //以下是调用基类的构造函数,并把创建好的参数(_config)传给Ext.Panel;
    /*
    相当于:
    new Ext.Panel({
    layout: 'accordion',
    region: 'west',
    split: true,
    width: 200,
    collapsible: true,
    animate: true,
    加上config传进去的参数
    })
    */
    Panel.supperclass.constructor.call(this, _config);//把参数传给Ext.Panel的构造函数
}
Ext.extend(Panel, Ext.Panel, {}); //继承Ext.Panel

 

 


/**********************************************************************************************/


var Tree = function (config) {//将接收一个config参数,用来配置dataUrl与title
    config = config || {};
    var loader = new Ext.tree.TreeLoader({ dataUrl: config.dataUrl });
    Tree.superclass.constructor.call(this, { //把参数传给Ext.tree.TreePanel
        animate: true,
        title: config.title,
        rootVisible: false,
        region: 'west',
        split: true,
        width: 200,
        collapsible: true,
        root: {},
        loader: loader
    });
}
Ext.extend(Tree, Ext.tree.TreePanel, {//上面的Tree继承于Ext.tree.TreePanel,,并为其添加click方法
    click: function (contentPanel) {
        this.on('click', function (node) {
            if (!node.attributes.leaf)
                return false;
            var tabid = "tree_tab_" + node.attributes.id;
            var exist_panel = contentPanel.getComponent(tabid);
            if (exist_panel)
                contentPanel.setActiveTab(exist_panel);
            else {
                var iframe_in_tab = "iframe_" + tabid;
                var iframe_html = "<iframe width=100% height=100% id='" + iframe_in_tab + "'/>";
                var panel = new Ext.Panel({
                    title: node.attributes.text,
                    id: tabid,
                    closable: true,
                    html: iframe_html
                });
                contentPanel.add(panel);
                contentPanel.setActiveTab(panel);
                Ext.get(iframe_in_tab).set({
                    src: node.attributes.url
                });
            }
        })
    }
});
var Main = function () {
    Main.superclass.constructor.call(this, {
        region: 'center',
        margins: '0 5 5 0',
        activeTab: 0,
        items: [
           { title: '首页', closable: false, html: 'welcome' }
        ],
        tbar: new Ext.Toolbar({
            items: [
              { xtype: 'displayfield', value: '内容页面导航', style: 'color: Red' },
              { xtype: 'button', text: '后退', tooltip: '后退', handler: function () {

              }
              },
              { xtype: 'button', text: '前进', tooltip: '前进', handler: function () {

              }
              },
              { xtype: 'button', text: '刷新', tooltip: '刷新', handler: function () {

              }
              }
           ]
        })
    })
}
//上面的继承于Ext.TabPanel
Ext.extend(Main, Ext.TabPanel, {});

Ext.onReady(function () {
    var contentPanel = new Main();
    var tree = new Tree({
        title: '省份列表',
        dataUrl: '/Index/mainIndex'
    });
    tree.click(contentPanel);
    new Ext.Viewport({
        layout: 'border',
        items: [
           { region: 'north', height:60, html: 'header', border: false },
           tree,
           contentPanel
        ]
    })

})

分享到:
评论

相关推荐

    extjs自定义控件

    下面将详细介绍ExtJS自定义控件的相关知识点。 1. **自定义控件基础** - **组件模型**:ExtJS基于MVC(Model-View-Controller)模式,其中控件(Component)是View层的核心。每个控件都有自己的配置选项、方法和...

    EXTJS 自定义combo控件

    xtype : 'jxcombo' //配置项 jxValueField:要获取值得字段名称,默认null //公共方法 getJXValue():返回自定义字段的值,如果没有自定义字段,则等价Ext.form.Combo类的getValue()方法

    ExtJs自定义分页控件----PM3PagingToolbar.js

    在 ExtJS3.3基础上开发的. 低一点的版本应该也能用. 没有去测试. 参考: Ext.PagingToolbar.js 因为我开发测试完这个分页工具后, 电脑上显示刚好是15:00, 所以取名: PM3PagingToolbar 如有BUG还请各位提出或留言. ...

    extjs时间控件精确秒

    在“EXTJS时间控件精确秒”这个主题中,我们将深入探讨EXTJS如何实现时间控件的秒级精确选择,以及如何自定义和优化这一功能。 EXTJS的时间控件主要通过`Ext.form.field.Time`类来实现。这个类提供了一个标准的时间...

    ExtJs5 日期自定义控件 精确到时分秒

    该代码仅适用于ExtJs5.x, 使用方法: 在Extjs5.x.js文件后引入以下两文件,注意顺序和路径: 例如: &lt;script type="text/javascript" src="ext/5.1/ext-all-debug.js"&gt;&lt;/script&gt; ${src}/DateTimePicker.js"&gt; ${src...

    ExtJS 自定义分页控件---- PM3PagingToolbar.js

    在 ExtJS3.3基础上开发的. 低一点的版本应该也能用. 没有去测试. 参考: Ext.PagingToolbar.js 如有BUG还请各位提出或留言. 附件中有图片, 一看就知道. 用法: var grid = new Ext.grid.GridPanel({ bbar: new Ext....

    extjs网页控件开发

    在"extjs网页控件开发"中,我们主要关注的是使用ExtJS来创建高效的网页组件,如图表和多级联动下拉列表框。这些控件能够显著提升用户界面的交互性和用户体验。 首先,让我们深入探讨ExtJS中的图表控件。ExtJS提供了...

    EXTJS时间控件年月日时分秒

    在EXTJS中,时间控件是常见的交互元素,允许用户选择特定的时间,包括年、月、日、时、分和秒。这篇文档将深入探讨EXTJS中的时间控件及其使用方法。 首先,EXTJS时间控件的设计理念是为了提供用户友好的时间选择...

    弥补ExtJs CheckboxSelectionModel不能级联的自定义控件

    这篇名为"弥补ExtJs CheckboxSelectionModel不能级联的自定义控件"的博客文章,显然是为了解决这个问题,提供了一个自定义的解决方案。作者Brooke在ITEYE博客上分享了这个方法,帮助开发者实现级联选择的功能。虽然...

    Extjs6 日期时间控件

    在EXTJS6中,日期时间控件是一种强大的用户界面组件,它将传统的日期选择器与时间选择器结合在一起,提供了一种便捷的方式来输入和编辑日期和时间数据。这个控件在许多应用程序中都非常实用,特别是在那些需要精确...

    EXTJS 自定义月选择控件

    monthNames:数组,月份显示名称,每个月只有前三位有效,默认["一月","二月",……,"十二月"] minYear:可以选定最小年,默认1970 minYearText:未通过最小年份验证时提示文本,默认"minYearNow" maxYear:可以选择的...

    extjs 微调控件,时间微调控件,微调,javascript 微调

    在ExtJS中,微调控件(Spinner)是一种用户界面组件,它允许用户通过点击向上或向下的箭头以微小增量增加或减少数值,常见于输入框旁边,提供一种方便的数值调整方式。这个控件在处理精确输入或者范围限制的数值时...

    ExtJS时间控件、IP输入控件【控件】

    通过这个压缩包,开发者可以学习如何自定义ExtJS组件来满足特定需求,如创建具有特定行为的时间选择器和IP地址输入框。这不仅涉及ExtJS API的使用,还包括对JavaScript和HTML的理解,以及前端开发的基本原理。对于想...

    extjs 时间控件

    在ExtJS中,时间控件是一种用户界面元素,允许用户选择或输入特定的时间值。它提供了丰富的交互性和自定义选项,使得时间选择过程更加直观和高效。在本篇文章中,我们将深入探讨ExtJS时间控件的使用、功能和配置。 ...

    ExtJs图片按钮控件

    ExtJs图片按钮控件是ExtJs框架中一种增强的按钮组件,它允许开发者在按钮上显示图片,以提供更丰富的用户界面。这个控件通常用于创建具有视觉吸引力的交互式UI元素,比如导航按钮或者操作按钮。下面我们将深入探讨...

    ExtJs搜索控件、插件

    在ExtJS中,搜索控件和插件是提升用户体验、实现高效数据查找的关键元素。本篇将深入探讨这些知识点,以帮助你更好地理解和应用。 首先,我们要了解`SearchField.js`在这个上下文中的作用。通常,这是一个自定义...

    ExtJs6.2中包含文本及时间选择框的自定义查询控件的解决方案

    ### ExtJs 6.2 中包含文本及时间选择框的自定义查询控件解决方案 在ExtJs 6.2框架中实现一个具有文本输入与时间选择功能的自定义查询控件是一个常见但实用的需求。本篇文章将详细介绍如何设计并实现这样一个控件,...

    extjs日期+时间控件

    9. **自定义控件**:如果标准的日期时间控件无法满足需求,开发者可以创建自定义组件,组合使用`Ext.form.field.Date`和`Ext.form.field.Time`,并通过`Ext.container.Container`来布局。 10. **数据绑定**:在MVVM...

    Ext自定义控件库

    自定义控件库是ExtJS开发中的一个重要资源,它体现了开发者对于业务理解和技术实践的积累,可以帮助团队快速开发出高质量的应用。在实际使用时,应根据具体需求选择合适的控件,并结合自身项目的特点进行适当的修改...

    extjs 数字控件

    extjs 数字控件 自动补零 控制小数 正负数 自定义错误

Global site tag (gtag.js) - Google Analytics