Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在自定义方法中获取对组件实例的引用_Javascript_Extjs_Scope - Fatal编程技术网

Javascript 在自定义方法中获取对组件实例的引用

Javascript 在自定义方法中获取对组件实例的引用,javascript,extjs,scope,Javascript,Extjs,Scope,我想扩展一个ext组件并向其添加几个自定义方法 我的问题是:当定义组件时,我如何在其自定义方法中获取对其实例的引用?(请查看下面的代码以获得澄清) 正如我对Ext.define的理解,我创建的有点像类,而使用Ext.create(或通过使用小部件快捷方式)我创建这个类的对象,如果我理解错误,请纠正我 例如: 我想基于Ext.toolbat.Toolbar创建页眉组件: Ext.define('Ext.lib.extensions.MyPageHeader', { extend: 'Ext

我想扩展一个ext组件并向其添加几个自定义方法

我的问题是:当定义组件时,我如何在其自定义方法中获取对其实例的引用?(请查看下面的代码以获得澄清)

正如我对Ext.define的理解,我创建的有点像类,而使用Ext.create(或通过使用小部件快捷方式)我创建这个类的对象,如果我理解错误,请纠正我

例如:

我想基于
Ext.toolbat.Toolbar
创建页眉组件:

Ext.define('Ext.lib.extensions.MyPageHeader', {
    extend: 'Ext.toolbar.Toolbar',
    alias: 'widget.myPageHeader',

    items: [
        xtype: 'component',
        autoEl: {
            cls: 'portal_page_header_title',
            tag: 'span'
        },
        id: 'pageTitleComponent'
    ],

    initComponent: function () {
        if (Object.prototype.hasOwnProperty.call(this.initialConfig, 'pageTitle')) {
            this.setPageTitle(this.initialConfig.pageTitle);
        }

        this.callParent(arguments);
    },

    setPageTitle: function (title) {
        // How I can get reference to a MyPageHeader instance here?
        // Is seems that `this` doesnt work, atleast I cant use `down()` method of Ext.toolbar.Toolbar
        this.down('#pageTitleComponent').update(title);
    }
});
我的工作方案是:

Ext.define('Ext.lib.extensions.MyPageHeader', {
    extend: 'Ext.toolbar.Toolbar',
    alias: 'widget.myPageHeader',

    initComponent: function () {
        this.pageTitleComponent = Ext.create('Ext.Component', {
            autoEl: {
                cls: 'portal_page_header_title',
                tag: 'span'
            }
        });

        var pageHeaderItems = [
            this.pageTitleComponent
        ];

        Ext.apply(this, {
            items: pageHeaderItems
        });

        if (Object.prototype.hasOwnProperty.call(this.initialConfig, 'pageTitle')) {
            this.setPageTitle(this.initialConfig.pageTitle);
        }

        this.callParent(arguments);
    },

    setPageTitle: function (title) {
        this.pageTitleComponent.update(title);
    }
});

但我不认为这是做这种事的最好方式。有更好的方法吗?

此代码将更新页面标题

        Ext.define('Ext.lib.extensions.MyPageHeader', {
        extend: 'Ext.toolbar.Toolbar',
        alias: 'widget.myPageHeader',



        initComponent: function () {

            var me = this;

            Ext.applyIf(me, {

                items: [
                    {
                        xtype: 'component',
                        autoEl: {
                            cls: 'portal_page_header_title',
                            tag: 'span'
                        },
                        itemId: 'pageTitleComponent'
                    }
                ],
            });

            me.callParent(arguments);

            me.setPageTitle(me.pageTitle);
        },

        setPageTitle: function (title) {

            // How I can get reference to a MyPageHeader instance here?
            // Is seems that `this` doesnt work, atleast I cant use `down()` method of Ext.toolbar.Toolbar
            this.down('#pageTitleComponent').update(title);
        }
    });


    var cmp = Ext.create('Ext.lib.extensions.MyPageHeader', {
        pageTitle: 'Cool Cat Dog'
    });

    console.log(cmp.down('#pageTitleComponent').html); // Cool Cat Dog
请参阅更新的小提琴:

问题是在调用this.callParent之前调用了this.setPageTitle。调用this.callParent会添加所有扩展功能,包括查询组件

祝你好运