处理树面板Extjs 4上的itemclick事件

时间:2011-05-23 08:00:29

标签: events extjs tree onclick extjs4

我想要做的是在不同的树LEAF点击上得到不同的反应!

var myTree = Ext.create('Ext.tree.Panel',
    store: store,
    rootVisible: false,   
    border: false,
    listeners: {
        itemclick: function(index) {            
            var record = store.getAt(index);
            alert(record);          
        }
    }
});

我尝试使用index,获取leaf的索引,没有。 我可以对节点点击做出反应,但是如何在每个叶子上得到特定的反应? 我也试过给叶子上身份证,没有运气???

也许是一个简单的

示例
itemclick: function(Ext.view.View this, Ext.data.Model record, HTMLElement item, Number index, Ext.EventObject e) {  

}

Pleeasse帮助!!

3 个答案:

答案 0 :(得分:10)

itemclick事件侦听器的函数参数“index”未指向树节点的索引。就像你在问题的最后提到的那样,itemclick事件的语法是:

function(Ext.view.View this, Ext.data.Model record, HTMLElement item, Number index, Ext.EventObject e) {

}

以下是一个例子:

itemclick : function(view,rec,item,index,eventObj) {

    // You can access your node information using the record object
    // For example: record.get('id') or record.get('some-param')
    if(r.get('id')=='SP') {
        // I do my necessary logic here.. may be open a perticular window, grid etc..
    }

    if(r.get('id')=='CO') {
        // I do my necessary logic here.. may be open a perticular window, grid etc..
    }           
}

以下是我的树节点数据的示例:

{ text: 'SP Reports', id: 'SP', leaf: true},
{ text: 'CO Reports', id: 'CO', leaf: true},

答案 1 :(得分:6)

项目点击处理程序已经为您提供了所需的一切:

itemclick(view, record, item, index, e ) {
    var id = record.get('id');
    // do something depending on the record data.
    // console.log(record);
}

答案 2 :(得分:3)

我试图做一个通用的treepanel项目点击处理程序,并且能够获得我添加到节点对象的自定义字段。这帮助了我。我不知道如果这是标准和兼容的ExtJs 4方式:

            (Some Panels Here),
            items: [{
                xtype: 'treepanel',
                listeners: {
                    itemclick: {

                        fn: function (view, record, item, index, e) {

                            console.log(record.raw.userData);
                        }
            (removed...)