3

私はExtJS4(beta 3)を使用していて、私の種類のナビゲーションメニューであるTreePanelを持っています。これは次のようなものです。

  • ジョブズ
    • ジョブを追加
    • すべてのジョブを一覧表示
  • ..。
    • ..。
    • ..。

(これは許可システムベースで行われますが、それは別の話です)

ExtJS 3では、[ジョブの追加]をクリックしたときに何かを実行するのは追加するのと同じくらい簡単でした

...
leaf:true,
listeners:{
click:function(n){
       //my code...
   }
}
...

ルートの子要素に。

今ではそれほど単純ではありません。私が近づいたのは(ツリーパネル上で)

listeners:{
    click : {
             element : 'el',
             fn : function(eve, elem, obj){
                   console.log(node);
                   console.log(elem);
                   console.log(obj);
                  }
    }
}

だから、たぶん私はただの初心者かもしれないし、ExtJSに対してすでに強い憎しみを持っているかもしれないし、このベータ版では問題なのかもしれないが...

ツリーノードのクリックイベントにリスナーを追加するにはどうすればよいですか?(Selectイベントは必要なことを実行しません)

君たちありがとう。

編集:現在これでテストしていますが、機能していません。

 ... = Ext.create('Ext.tree.TreePanel', {
                        region      : 'west',
                        collapsible : false,
                        title       : 'ITMI',
                        width       : 220,
                        margins     : '5 5 5 5',
                        cmargins    : '5 5 5 5',
                        hideHeaders : true,
                        useArrows   : true,
                        rootVisible : false,
                        headers: [{
                                xtype    : 'treeheader',
                                text     : 'Nome',
                                flex     : 1,
                                dataIndex: 'nome'
                            }],
                        store: store,
                        listeners:{
                            itemclick: function(n){
                                console.info(n);
                            }
                        }
    ...

編集2: itemclickイベントが機能するようになりました(EXJS 4ファイナルで)、それでも問題は解決しません。各ツリーノードを呼び出すときに、特定の関数を呼び出したいのですが。それが本当に簡単だった前に。今、私はそれを理解することができません。

4

3 に答える 3

8

ext4 beta3(おそらく最終リリースでも)...clickイベントはもうありません....これは詳細
に変更されましたitemclick

var tree = Ext.create('Ext.tree.Panel', {
    store: store,
    renderTo: Ext.getBody(),
    height: 300,
    width: 250,
    title: 'Files',

    listeners:{
        itemclick: function(n){
            console.info(n);
        }
    }

});
于 2011-04-19T17:32:09.570 に答える
1

IEでitemclickを起動できませんでした(Chromeでは問題ありません)。'checkchange'を使用するようにコードを変更しましたが、正常に機能します。

于 2012-06-05T19:56:32.670 に答える
1

だから、それは私が当時行ったのと同じ問題に苦しんでいるかもしれない何人かの人々を助けるかもしれません。

「itemclick」イベントは、リーフクリックを処理する方法ですが、覚えていない理由で、そのときは機能しませんでした。

データベースにある構成を分割することで、必要なことを達成しました。

controllerName|functionName

次に、「itemclick:」のハンドラーでこのコードを呼び出します。

this.getController(ctr)[fn]();  

ここで、ctrcontrollerNamefnfunctionNameです。これはevalで簡単に行うことができますが、私はしたくないです。

于 2012-03-12T17:42:36.577 に答える