2016-06-21 2 views
0

Я написал простую функцию javascript для создания диаграммы пирога/пончика. Я не могу использовать любую библиотеку диаграмм, доступную на рынке. Я поражен написанием события кликов с надписью. Я передаю параметры диаграммы, как JavaScript ObjectКак получить доступ к функциям, переданным в объекте javascript?

{ 
chartType:"donut", 
legend: { 
      click: function() { "legendText" // create another chart based on this value. } 
      } 
} 

В функции мыши, основываясь на значении легенды, пользователь будет писать второй JavaScript Object объекта для создания другого пончика диаграммы (я планирую попросить пользователь использовать legendText, который получит текст легенды при щелчке). Главная беда в этом, как включить эту функцию пользователя в моем legendclick случае и как определить выбранный код легенда

behind(legenditem.addeventlistener("click",function(){})). 
+4

JSON обычно не используется для хранения этих вещей, его обмен данными. Тем не менее, вы всегда можете сгенерировать функцию, а затем запустить ее с помощью конструктора Function, хотя он может создавать потенциальные векторы атаки, если кому-либо разрешено добавлять такие функции ... – somethinghere

+7

Это не JSON. JSON не может выразить функции. У вас есть простой объект Javascript. * – deceze

+0

@deceze: Спасибо, что указали это. –

ответ

0

У меня это работает. Я должен был попробовать это до публикации. Пользователь:

{ 
    legend:{ 
      click : function(legendSelectedText){ 
       //do your operations 
      } 
    } 
} 

Диаграмма Функция:

legenditem.addEventListener("click",function(){ 
    var legenditem = //get legendtext from code behind; 
    chartObject.legend.click(legenditem); 
}); 
0

Вы можете попробовать создать новую функцию и запустить его.

var obj = JSON.parse(yourstring); 
var func = new Function(obj.MyFunction); 
func(); 

Примечание. Ваша функция должна быть в строчном формате, а не в формате кода для этого. Хотя это создает некоторые риски для безопасности.

Смежные вопросы