2011-05-23 12 views
7

lo que trato de hacer es obtener una reacción diferente en un árbol diferente ¡clic de LEAF!Manejo de evento de evento de elemento en el panel de árbol Extjs 4

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

He intentado con el índice, para obtener el índice de la hoja, nada. Puedo obtener una reacción en un clic de nodo, pero ¿cómo obtener una reacción específica en cada hoja? También traté de dar ID a las hojas, ¿no hubo suerte?

Tal vez un ejemplo sencillo de

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

} 

Pleeasse ayuda !!

Respuesta

10

del oyente itemclick caso la función parámetro "índice" no apunta al índice de su nodo del árbol. Al igual que usted ha mencionado en el final de su pregunta la sintaxis para el evento itemclick es:

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

} 

Aquí se muestra un ejemplo:

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.. 
    }   
} 

Y aquí es un ejemplo de los datos de mi nodo del árbol:

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

¿Qué pasa con los parámetros personalizados? No puedo obtener el registro de formulario, por ejemplo, el parímetro s, incluso si se envió a la tienda por json? ¿Cómo puedo obtener datos de este niño de parámetros? –

+0

También necesito saber cómo acceder a los parámetros personalizados – Awalias

6

manejador itemClick ya le da everyting que necesita:

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

@Abdel Olakara muchas gracias, lo intenté, funciona !!!! –

+0

@ischenkodv enfoque mejor y más limpio en mis ojos! – Chris

3

Estaba tratando de hacer un gestor de clics de elementos de panel de árbol genérico y poder obtener un campo personalizado que añadí al objeto de nodo. Esto me ayudó. No sé si este es el modo estándar y compatible ExtJs 4:

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

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

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

Lo que estaba buscando, ¡gracias! Lo estaba necesitando: record.raw :) –

+0

Tengo '{text: 'SP Reports', id: 'SP', hoja: true, custom: 'Hello'}' ¿cómo puedo acceder a la propiedad personalizada? – Awalias

Cuestiones relacionadas