2012-03-07 10 views
6

Tengo un sitio web asp.net mvc and am using javascript treemap control para mostrar un mapa de calor. Este control funciona muy bien, pero quería ver si puedo incluir otros campos json en la devolución de llamada que se usa para actualizar otro div.¿Hay alguna forma de devolver otros datos dentro de javascript treemap json?

¿Alguien sabe si esto es posible? En este momento tengo que saltar de un lado a otro y hacer 2 llamadas ajax separadas, pero quería ver si puedo transmitir esta información junto con la respuesta treemap json.

+1

¿En qué parte del código realiza las devoluciones de llamada? De mano, veo un par de controladores de eventos, pero no veo llamadas ajax en lo que publicaste. –

Respuesta

5

Lo que tendría que hacer es una sola llamada en la que resuelva usted mismo la devolución de llamada. Aquí el JSON sería una estructura como

var data = { 
    heatmap_data: {} 
    other_data: {} 
} 

y próxima llamada

tm.loadJSON(data.heatmap_data); 

para cargar los datos de mapa de calor y utilizar todos los demás datos a su propio gusto. Eso debería hacer el truco, ¿verdad? Al menos, eso es si loadJSON toma un objeto como parece ser el caso. Aún así, esta respuesta parece demasiado simple, por lo que podría estar totalmente perdido el punto.

0

Usted tiene una estructura definida para su TreeMap, básicamente, tiene todos los nodos con claves id, name, data y children. Por lo que leo en los documentos, no hay restricciones en otras teclas. De modo que puede agregar claves adicionales dentro del atributo data.

Por ejemplo, su respuesta JSON podría ser así:

{ 
    "data": { 
     "myCustomData": { /* your data here */ } 
    }, 
    "id": "root", 
    "name": "Top Albums", 
    "children": [ 
     { 
      "data": { 
       "playcount": 547, 
       "$area": 547, 
       "myCustomData": { /* your data here */ } 
      }, 
      "id": "artist_A Perfect Circle", 
      "name": "A Perfect Circle" 

     } 
    ] 
} 

Cuando se desea utilizar sus datos extra que hace esto:

... 
onClick: function(node) { 
     ... 
     if(node.data.myCustomData){ 
      /*** you have data, do something here ***/ 
     } 
} 

Aquí tienes un LIVE EXAMPLE con una alerta cuando haces clic en los nodos con myCustomData. Pase el mouse sobre la casilla "Hacerse usted mismo" en la esquina superior izquierda para ver los datos personalizados en la información sobre herramientas y una alerta con los datos personalizados al hacer clic.

Busque el código de "mycustomdata" para ver cómo se hace.

Cuestiones relacionadas