5

メニューがリンクされているコンポーネントを取得しようとしています。見てみましょう:

    Ext.create('Ext.Button', {
    id: 'MyButton',
    text: 'Click me',
    renderTo: Ext.getBody(),
    menuAlign: 'tl-bl',
    menu: {
        itemId: 'MyMenu',        
        forceLayout: true,
        items:
        [
            {
                text  : 'Option 1',
                itemId: 'MyItemMenu1'
            }, {
                text  : 'Option 2',
                itemId: 'MyItemMenu2'
            }, {
                text   : 'Get the parent!',
                itemId : 'MyItemMenu3',
                handler: function(){
                    
                    // Get the item menu.
                    var MyItemMenu3 = this; 
                    alert(MyItemMenu3.getItemId()); 
                    
                    // Get the menu.
                    var MyMenu = MyItemMenu3.ownerCt; 
                    alert(MyMenu.getItemId());
                    
                    // Try to get the button.
                    var MyButton = MyMenu.ownerCt; 
                    alert(MyButton);                    
                    
                    // Returns:                    
                    // 'MyItemMenu3'
                    // 'MyMenu'
                    // undefined                 
                }
            }
        ]
    }
});

オンラインの例: http://jsfiddle.net/RobertoSchuster/mGLVF/

何か案が?

4

5 に答える 5

6

私は自分でEXTを学んでいるので、何が起こっているのかよくわかりませんが、この方法で取得できたと思います: console.log(MyMenu.floatParent.id);

于 2011-08-03T15:14:10.260 に答える
3

ExtJS 4 プロジェクトでは、最終的にup()関数にパッチを適用しました。AbstractComponent

Ext.AbstractComponent.override({
    up: function(selector) {
        var result = this.ownerCt||this.floatParent;
        if (selector) {
            for (; result; result = result.ownerCt||result.floatParent) {
                if (Ext.ComponentQuery.is(result, selector)) {
                    return result;
                }
            }
        }
        return result;
    }
});

これにより、チェーンをup()上っていきますが、定義されていない場合は になります。ownerCtownerCtfloatParent

cmp.up('some-selector');メニューやメニュー項目であっても呼び出すことができるようになりました。

于 2012-04-19T19:39:36.470 に答える
1

これを試して:

Ext.getCmp('My-Button').menu.refOwner
于 2011-08-03T02:20:14.137 に答える
1
var MyButton = MyItemMenu3.up('button');

または ExtJS3 の場合:

var MyButton = MyItemMenu3.findParentByType('button');
于 2011-08-03T05:07:22.260 に答える
0

ExtJS の最新バージョン (4.2) 以降では、すべての Ext.menu.Item にparentMenu親メニューにアクセスできるプロパティがあります。カスタム メニュー項目用にこれをサブクラス化できます。

于 2014-02-18T15:59:58.073 に答える