2012-03-07 3 views
6

Ho un sito Web asp.net mvc and am using javascript treemap control per visualizzare una mappa termica. Questo controllo funziona alla grande ma volevo vedere se riesco a inserire alcuni altri campi JSON nel callback che viene utilizzato per aggiornare un altro div.Esiste comunque la restituzione di altri dati all'interno della javascript treemap json?

Qualcuno sa se questo è possibile. In questo momento devo rimbalzare avanti e indietro e fare 2 chiamate ajax separate, ma volevo vedere se posso passare insieme a queste informazioni insieme alla risposta json di treemap.

+1

Dove nel codice si stanno effettuando le richiamate? Fuori mano vedo un paio di gestori di eventi, ma non vedo alcuna chiamata ajax in ciò che hai postato. –

risposta

5

Quello che dovresti fare è una singola chiamata in cui risolvi tu stesso la callback. Qui il JSON sarebbe una struttura come

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

e successiva chiamata

tm.loadJSON(data.heatmap_data); 

per caricare i dati HeatMap e utilizzare tutti gli altri dati a proprio piacimento. Questo dovrebbe fare il trucco giusto? Almeno, questo è se loadJSON prende un oggetto come sembra essere il caso. Tuttavia, questa risposta sembra troppo semplice, quindi potrei sentirmi totalmente a mancare il punto.

0

Hai una struttura definita per la vostra TreeMap, in pratica si ha ogni nodo con le chiavi id, name, data e children. Per quanto ho letto nei documenti, non ci sono restrizioni su altre chiavi. Quindi puoi aggiungere chiavi extra all'interno dell'attributo data.

Per esempio il vostro risposta JSON potrebbe essere simile a questo:

{ 
    "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" 

     } 
    ] 
} 

Quando si desidera utilizzare i dati in più si esegue questa operazione:

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

Ecco una LIVE EXAMPLE con un avviso quando si fa clic sui nodi con myCustomData. passa il mouse sulla casella "Crea te stesso" nell'angolo in alto a sinistra per visualizzare i dati personalizzati nella descrizione comando e un avviso con i dati personalizzati al clic.

Cerca il codice per "mycustomdata" per vedere come è fatto.