1

ビューとコントローラーがあります。ビューにはボタンの下にメニューがあり、クリックするとコントローラーによって処理されるアイテムが表示されます。クラスセレクターを配置した場合、イベントはコントローラーによってキャッチされませんが、クラスセレクターを削除した場合は機能します。

私のコードを見てください。

意見

Ext.create('Ext.Button', {
    text: 'Add Tab',
    cls: 'button',
    menu: Ext.create('Ext.menu.Menu', {
        cls: 'addMenu',
        items: [{
            text: 'One'
        }, {
            text: 'Two'
        }]
    })
});

そしてコントローラー

Ext.define('MyApp.controller.TabController', {
    extend : 'Ext.app.Controller',

    init : function() {
        this.control({
            'menu[cls=addMenu]' : {
                'click' : this.addTab
            }
        });
    },

    addTab : function(a, b, c, d) {
        console.log(a, b, c, d);
    }
});

私はここで何が間違っているのですか?

4

3 に答える 3

0

たぶん、クラス名を次のような引用符で囲む必要があります

'menu[cls="addMenu"]'
于 2012-09-09T10:13:19.220 に答える
0

私は自分の問題を逆に解決しました。

意見

Ext.create('Ext.Button', {
    text: 'Add Tab',
    cls: 'button addTab',
    menu: Ext.create('Ext.menu.Menu', {
        cls: 'addMenu',
        items: [{
            text: 'One'
        }, {
            text: 'Two'
        }]
    })
});

そしてコントローラー

Ext.define('MyApp.controller.TabController', {
    extend : 'Ext.app.Controller',

    init : function() {
        this.control({
            'button[cls=button addTab] > menu' : {
                'click' : this.addTab
            }
        });
    },

    addTab : function(a, b, c, d) {
        console.log(a, b, c, d);
    }
});

これはうまくいきます!

于 2012-09-09T12:04:58.143 に答える
0

一般に、「=」演算子はCSSクラス以外のオブジェクトプロパティに適していますが、「〜=」演算子は空白で区切られたCSSクラスのリストを保持するプロパティで最適に機能します。

于 2013-07-23T09:36:59.117 に答える