1

ビュークラスを持つMVCのアプリケーションがあります:

Ext.define('a.view.Mainmenu' ,{
    extend: 'Ext.menu.Menu',
    alias: 'widget.mainmenu',
    text: 'Menu',
    items: [
    {
        xtype: 'menucheckitem',
        id: 'mci1',
        text: 'a'
    },
    {
        xtype: 'menucheckitem',
        id: 'mci2',
        text: 'b'
    }]
});

コントローラのmenucheckitemsのクリックイベントを制御するにはどうすればよいですか?menucheckitemsがチェックされているか確認したい。コントローラのinit関数で何かを試しましたが、エラーがあります(item.down( "mci1")はnullです):

...
init: function() {
    this.control({
        'mainmenu': {
            click: function(item) {
                if (item.down('mci1').checked == true) {
                    ...
                }
                if (item.down('mci2').checked == true) {
                    ...
                }
            }
        }
    });
}

どうすれば正しくできますか?

4

2 に答える 2

1

@リンゴ、

Sencha ドキュメント (http://docs.sencha.com/ext-js/4-0/#!/api/Ext.menu.CheckItem-イベントチェック変更)。

だから、それがそれらが機能していない理由です。

「checkchange」と呼ばれる menucheckitem の xtype のイベントがあります。このイベントにより、関数で次の引数を使用できるようになります。

  • this (Ext.menu.CheckItem) <= チェックされている/チェックされていない実際の menucheckitem (つまり、ユーザーがクリックしたものに応じて mci1 または mci2)
  • checked (ブール値) <= 変更によって menucheckitem がチェックされている場合は true、チェックされていない場合は false。

したがって、これには次のようなことを行うだけで済みます。

...
init: function() {
this.control({
    'mainmenu menucheckitem': {
        checkchange: function(item, checked) {
            if (checked) {
                if(item.id == 'mci1'){
                  ...
                }
            }else{
                ...
            }
        }
    }
  });
}
于 2011-10-27T15:34:43.430 に答える
0

item パラメータはすでにメニュー項目です。問い合わせる必要はありません。

したがって、次のようになります。

if(item.checked && item.getId() == 'mci1'){
...
}
于 2011-10-27T15:19:28.370 に答える