2016-06-21 11 views
0

Ich habe eine einfache JavaScript-Funktion geschrieben, um Kuchen/Donut-Diagramm zu generieren. Ich kann keine auf dem Markt verfügbare Diagrammbibliothek verwenden. Ich bin beeindruckt von der Legende Click Event. Ich bin vorbei an den Chart-Parameter als JavaScript-ObjektWie kann man auf Funktionen zugreifen, die in einem JavaScript-Objekt übergeben wurden?

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

In der Klick-Funktion auf der Legende Wert basiert, wird der Benutzer zum Erzeugen von weiteren Ringdiagramm ein zweites Javascript-Objekt-Objekt schreiben (Ich plane, die Benutzer zu fragen, zu verwenden, legendText, der den Legendentext bei Klick erhält). Das Hauptproblem dieser, wie diese Benutzerfunktion in meinem legendclick Ereignisse enthält und wie der ausgewählte Legende Code bestimmt

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

JSON ist nicht in der Regel verwendet, um diese Dinge zu speichern, es ist ein Datenaustausch. Sie können jedoch immer eine Funktion stringieren und dann mit dem Konstruktor Function starten, obwohl dies potentielle Angriffsvektoren erzeugen könnte, wenn jemand Funktionen wie diese hinzufügen darf ... – somethinghere

+7

Das ist nicht JSON. JSON kann keine Funktionen ausdrücken. Was Sie haben, ist ein einfaches * Javascript-Objekt. * – deceze

+0

@deceze: Danke für das Zeigen. –

Antwort

0

Ich habe es funktioniert. Ich hätte das vor dem Posten ausprobieren sollen. Benutzer:

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

Diagramm Funktion:

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

können Sie versuchen, eine neue Funktion zu schaffen und es läuft.

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

Hinweis: Ihre Funktion muss im Zeichenfolgenformat vorliegen, nicht im Codeformat, damit dies funktioniert. Obwohl dies einige Sicherheitsrisiken birgt.

Verwandte Themen