0

ウィンドウがあり、いくつかのテキストフィールドとボタンが含まれています。ボタンの定義は次のとおりです。alias.widget:'mywin', ....

            {
                xtype: 'button',
                height: 40,
                width: 110,
                text: 'send',
                x: 58,
                y: 12,
                action: 'buttonclick'
            },

私のコントローラーでは、このボタンのクリックを検出し、console.log ステートメントを表示します。

コードは次のとおりです。

init: 関数(アプリケーション) { this.control({

        'mywin button[action=buttonclick]': {
            click: this.butClick
        }
    });
},


butClick: function(button,record) {
    console.log('Button clicked');

これは表示されません。どうすれば解決できますか?

アップデート

Ext.define('MyApp.view.MyWindowClass', {
    extend: 'Ext.window.Window',
    alias: 'widget.mywin',
    height: 340,
    id: 'mywinid',
    width: 728,
    layout: {
        type: 'absolute'
    },

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [

                {
                    xtype: 'textareafield',
                    height: 140,
                    width: 340,
                    fieldLabel: 'Name',
                    x: 370,
                    y: 80
                },
                {
                    xtype: 'button',
                    height: 40,
                    width: 210,
                    text: 'Save',
                    x: 480,
                    y: 240,
                    action: 'submitfeedback'
                },
                {
                    xtype: 'datefield',
                    id: 'dd',
                    readOnly: true,
                    fieldLabel: 'Today',
                    x: 10                  
                }
            ],
            listeners: {
                show: {
                    fn: me.onWindowShow,
                    scope: me
                }
            }
        });
        me.callParent(arguments);
    }
});

コントローラ

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    models: [
        'MyController'
    ],
    stores: [
        'MyController'
    ],
    views: [
        'MyWindowClass',        
    ],
    init: function(application) {
        this.control({
            'mywin button[action=submitfeedback]': {
                click: this.butClick
            }
        });
    },
    butClick: function(button,record) {
        console.log('button clicked');
        });
    }
});
4

2 に答える 2

3

2 つの可能性:

  1. これはおそらくタイプミスですが、あなたが書いalias.widget: 'mywin'た. これはalias: 'widget.mywin'

  2. コントローラーがロードされていない可能性があります。init 関数の先頭にブレーク ポイントを配置して、実行されるかどうかを確認します。

それ以外は、コードは正しく見えます。さらにコンテキスト (ウィンドウの作成方法、コントローラーのロード方法、mywin の完全な定義など) を投稿していただければ、さらに詳しく調べることができます。

編集

セレクターの大文字と小文字が間違っています。myWinする必要がありますmywin

于 2012-07-24T14:23:06.943 に答える
0

パーツを追加する以外は、リスナーが正しく設定されてい[action=buttonclick]ます。これに関するドキュメントは次のとおりです。

'mywin button': { // this line determines what view object you want to listen to
    click: this.butClick // this line determines what event you want to listen to
}
于 2012-07-24T14:10:41.377 に答える