【问题标题】:ExtJS-4: override on method 'onMouseDown' ain't workingExtJS-4:覆盖方法“onMouseDown”不起作用
【发布时间】:2019-01-13 13:19:41
【问题描述】:

我无法从类中覆盖函数“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'));
        }
    }
});

【问题讨论】:

  • 请尝试添加fiddle,我会努力解决的。

标签: extjs extjs4.2


【解决方案1】:

“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'));
        }
    } 
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    相关资源
    最近更新 更多