编程语言
首页 > 编程语言> > javascript – ExtJS4 LinkBut​​ton组件

javascript – ExtJS4 LinkBut​​ton组件

作者:互联网

我正在尝试在Ext JS 4中创建自己的LinkBut​​ton组件.没什么新鲜的,对吧?

我的代码看起来像这样:

Ext.define('LinkButton', {
    extend: 'Ext.Component',
    xtype: 'linkbutton',
    autoEl: 'a',
    renderTpl: '<a href=\"javascript:;\">{text}</a>',
    config: {
        text: '',
        handler: function () { }
    },
    initComponent: function () {
        var me = this;
        me.callParent(arguments);

        this.renderData = {
            text: this.getText()
        };

        var handler = me.getHandler();
        if (handler) {
            me.on('click', handler);
        }
    }
});

到现在为止还挺好!我的LinkBut​​ton看起来像一个超链接和我的文本内容.优美.

但是,当我点击它时,我无法让我的组件触发事件!

这个特殊的行me.on(‘click’,handler);不管用!即使我从on更改为addListener它也没有效果.

所以问题是:如何将DOM事件添加到我的组件中?或者,更好的是,如何访问我自己的组件的DOM元素?我无法做到这一点!

谢谢!

解决方法:

这是我的命题,它基于Button组件的源代码:

Ext.define('LinkButton', {
    extend: 'Ext.Component',
    xtype: 'linkbutton',
    autoEl: 'a',
    renderTpl: '<a href=\"javascript:;\" id="{id}-btnEl">{text}</a>',
    config: {
        text: '',
        handler: function () { }
    },
    initComponent: function () {
        var me = this;
        me.callParent(arguments);

        this.renderData = {
            text: this.getText()
        };
    },
    onRender: function(ct, position) {
        var me = this, 
            btn;

        me.addChildEls('btnEl');

        me.callParent(arguments);

        btn = me.btnEl;

        me.mon(btn, 'click', me.onClick, me);
    },
    onClick: function(e) {
        var me = this;
        if (me.preventDefault || (me.disabled && me.getHref()) && e) {
            e.preventDefault();
        }
        if (e.button !== 0) {
            return;
        }
        if (!me.disabled) {
            me.fireHandler(e);
        }
    },
    fireHandler: function(e){
        var me = this,
            handler = me.handler;

        me.fireEvent('click', me, e);
        if (handler) {
            handler.call(me.scope || me, me, e);
        }
    }
});

工作样本:http://jsfiddle.net/lolo/AEwH4/1/

标签:html,javascript,extjs,components,extjs4
来源: https://codeday.me/bug/20190902/1790598.html