我可以覆盖Ext.id功能吗?

时间:2018-01-30 10:57:52

标签: extjs

我可以覆盖ext-all-debug ExtJS常规文件夹中的函数ID吗?我想将此函数覆盖到不同的Javascript文件夹。我该如何定义?

id: function (el, prefix) {
        var me = this,
            sandboxPrefix = '';
        el = Ext.getDom(el, true) || {};
        if (el === document) {
            el.id = me.documentId;
        }
        else if (el === window) {
            el.id = me.windowId;
        }
        if (!el.id) {
            if (me.isSandboxed) {
                if (!me.uniqueGlobalNamespace) {
                    me.getUniqueGlobalNamespace();
                }
                sandboxPrefix = me.uniqueGlobalNamespace + '-';
            }
            el.id = sandboxPrefix + (prefix || "ext-gen") + (++Ext.idSeed);
        }
        return el.id;
    },

1 个答案:

答案 0 :(得分:0)

您可以使用

来完成
  

Ext.override

在下面的小提琴中,你可以看到"自定义函数叫"在控制台中,id函数已被覆盖。

POC代码:

Ext.onReady(function () {
    Ext.override(Ext, {
        id: function (el, prefix) {
            console.log("Custom Function called");
            var me = this,
                sandboxPrefix = '';
            el = Ext.getDom(el, true) || {};
            if (el === document) {
                el.id = me.documentId;
            } else if (el === window) {
                el.id = me.windowId;
            }
            if (!el.id) {
                if (me.isSandboxed) {
                    sandboxPrefix = Ext.sandboxName.toLowerCase() + '-';
                }
                el.id = sandboxPrefix + (prefix || "ext-gen") + (++Ext.idSeed);
            }
            return el.id;
        }
    });


    Ext.application({
        name: 'Fiddle',

        launch: function () {
            Ext.Msg.alert('Fiddle', 'Welcome to Sencha Fiddle!');
        }
    });
});

小提琴示例:https://fiddle.sencha.com/#view/editor&fiddle/2cgq