ExtJS中自定义组件并将事件暴露给调用者

复制代码
/**
 * @example Image
 *
 * A Component subclass that adds a value to an image
 
*/
Ext.require('Ext.panel.Panel');

Ext.define('Ext.ux.Image', {
    extend: 'Ext.Component', // subclass Ext.Component
    alias: 'widget.managedimage', // this component will have an xtype of 'managedimage'
    autoEl: {
        tag: 'img',
        src: Ext.BLANK_IMAGE_URL,
        cls: 'my-managed-image'
    },

    // Add custom processing to the onRender phase.
    // Add a ‘load’ listener to the element.
    onRender: function () {
        this.autoEl = Ext.apply({}, this.initialConfig, this.autoEl);
        this.callParent(arguments);
        this.el.on('load', this.onLoad, this),                  //load不是img的事件
        this.el.on('click', this.onclick, this);
    },

    onLoad: function () {
        this.fireEvent('load', this);
    },

    onclick: function () {
        this.fireEvent('click', this);
    },

    setSrc: function (src) {
        if (this.rendered) {
            this.el.dom.src = src;                      //el是Ext.Element类的一个实例,应该指向中的是ExtJS组件的根结点
        } else {
            this.src = src;
        }
    },

    getSrc: function (src) {
        return this.el.dom.src || this.src;
    }
});

Ext.onReady(function () {

    var image = Ext.create('Ext.ux.Image');

    Ext.create('Ext.panel.Panel', {
        title: 'Image Panel',
        height: 200,
        renderTo: Ext.getBody(),
        items: [image]
    })

    image.on('load', function () {
        console.log('image loaded: ', image.getSrc());
    });

    image.on('click', function () {
        alert('click');
    });

    image.setSrc('http://www.sencha.com/img/sencha-large.png');

});
复制代码
posted @   吴东雷  阅读(2404)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
历史上的今天:
2007-07-14 4.7判定树和哈夫曼树
点击右上角即可分享
微信分享提示