ExtJS-4:方法'onMouseDown'上的覆盖无效

时间:2018-08-06 14:33:49

标签: extjs extjs4.2

我无法从类中覆盖函数“ onmousedown” Ext.util.Floating。 示例如下。 如果我想覆盖前缀为“ on”的功能,是否可以遵循一些模式? 构造函数正在从覆盖的代码块中调用,但是'onMouseDown'仍恢复为ext-all-debug文件。

Ext.define('Ext.util.Floating.override', {
    override: 'Ext.util.Floating',
    constructor: function(){console.log('onmousedown: This gets invoked.')},
    onMouseDown: function (e) {
        console.log('OverrideOnMouseDown');
        var focusTask = this.focusTask;

        if (this.floating && (!focusTask || !focusTask.id)) {
            this.toFront(!!e.getTarget(':focusable'));
        }
    }
});

1 个答案:

答案 0 :(得分:0)

“ Ext.util.Floating”类的构造函数经过硬编码,可以选择方法“ onMouseDown”,而无需检查任何替代。

我也覆盖了构造函数,并实现了对onMouseDown存在的覆盖检查。

Ext.define('Ext.util.Floating.override', {
    override: 'Ext.util.Floating',
    constructor: function(){
        .
        .
        .
        me.mon(me.el, {
                //redirects to the overridden method we provided.
                mousedown: me.mixins.floating.onMouseDown ? me.mixins.floating.onMouseDown: me.onMouseDown,
                scope: me
        });
        .
        .
        .
    },
    onMouseDown: function (e) {
        console.log('OverrideOnMouseDown');
        var focusTask = this.focusTask;

        if (this.floating && (!focusTask || !focusTask.id)) {
            this.toFront(!!e.getTarget(':focusable'));
        }
    } 
});