2

私はextjs4で働いています。チェックボックス付きのツリービューがあります-

Ext.define('Balaee.view.qb.qbquestion.tree1', {
extend: 'Ext.tree.Panel',
title: 'Simple Tree',
id:'tree1',
alias : 'widget.tree1',
store:'qb.qbquestionStore',
displayField: 'text',
rootVisible : true,
multiSelect : true,
renderTo: Ext.getBody(),
    dockedItems: [{
        xtype: 'toolbar',
        items: {
            text: 'Get checked nodes',
            handler: function(){
                var tree = this.up('panel');
                var records = tree.getView().getChecked(),
                    names = [];

                Ext.Array.each(records, function(rec){
                    names.push(rec.get('text'));
                });

                Ext.MessageBox.show({
                    title: 'Selected Nodes',
                    msg: names.join('<br />'),
                    icon: Ext.MessageBox.INFO
                });
            }}}]});

したがって、このハンドラー関数でチェックされたツリーノードを取得しています。extjs4のコントローラーでチェックされたノードを取得したい。では、extjs4 のコントローラーでこのハンドラー関数を記述する方法は? または、コントローラーの送信ボタンをクリックしてこれらのチェックされたノードを取得する方法は?

4

2 に答える 2

0

コントローラーの init 関数にコンポーネント イベントを追加し、そこからコールバック関数を呼び出す必要があります。以下のサンプルを参照してください。

ビュー部分で

 this.buttons = [
            {
                text: 'Save',
                action: 'save'
            }]

コントローラー部分に

init: function() {
        this.control({
           'useredit button[action=save]': {
                click: this.updateUser
            }
        });
    }
 ...
    updateUser: function(button) {
       // write your stuff here.   
    }

問題が見つかった場合は、以下の煎茶ガイドと例を参照してください。

http://docs.sencha.com/extjs/4.2.0/#!/guide/application_architecture

ありがとう。

于 2013-06-14T09:02:26.487 に答える
0

コントローラーで、refs を使用してツリー ビューへの参照を取得します。これにより、次のようなイベント ハンドラーでツリー ビューにアクセスできるようになります。

this.getTreeView()

コントローラーのinit関数でボタンのイベントハンドラーを定義できます

これを試してみてください。コードを投稿して行き詰まった場合は、私たちがお手伝いします

アップデート:

また、ビューで xtype を定義する必要があります xtype: 'tree1'

あなたの参照で、これを試してください:

refs: [{ ref: 'treeView', selector: 'tree1' }],

this.getTreeView()これで、コントローラー メソッドにアクセスできるようになります。行き方を教えてください。

于 2013-06-14T06:45:01.290 に答える