Есть ли способ вернуть другие данные в javascript treemap json? - PullRequest
6 голосов
/ 07 марта 2012

У меня есть веб-сайт asp.net mvc , и я использую элемент управления javascript treemap для отображения карты температур. Этот элемент управления работает отлично, но я хотел посмотреть, смогу ли я вставить некоторые другие поля json в колбэк, который используется для обновления другого div.

Кто-нибудь знает, возможно ли это? Прямо сейчас я должен отскакивать назад и вперед и делать 2 отдельных вызова AJAX, но я хотел посмотреть, смогу ли я передать эту информацию вместе с ответом на карту дерева json.

Ответы [ 2 ]

5 голосов
/ 13 марта 2012

То, что вам нужно будет сделать, - это один звонок, при котором вы сами решаете обратный вызов.Здесь json будет иметь такую ​​структуру, как

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

и следующий вызов

tm.loadJSON(data.heatmap_data);  

, чтобы загрузить данные тепловой карты и использовать все остальные данные по своему вкусу.Это должно сделать трюк правильно?По крайней мере, это если loadJSON принимает объект, как кажется.Тем не менее, этот ответ кажется слишком простым, поэтому я, возможно, полностью упускаю суть.

0 голосов
/ 17 марта 2012

У вас есть определенная структура для вашего TreeMap, в основном у вас есть каждый узел с ключами id, name, data и children.Насколько я читаю в документах, нет никаких ограничений на другие ключи.Таким образом, вы можете добавить дополнительные ключи в атрибут data.

Например, ваш ответ json может быть таким:

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

        }
    ]
}

Когда вы хотите использовать дополнительные данные, вы делаете это:

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

Здесь у вас есть ЖИВОЙ ПРИМЕР с предупреждением при нажатии на узлы с myCustomData.Наведите курсор мыши на поле «Сделай сам» в верхнем левом углу, чтобы увидеть пользовательские данные во всплывающей подсказке и предупреждение с пользовательскими данными при нажатии.

Найдите код «mycustomdata», чтобы увидеть, как это делается.

...