2017-07-28 1 views
0
chart = initialiseGraph(); 
chart.graphs.forEach(function(elm){ 
elm.hidden=true; 
}); 
chart.validateNow(); 

undamCharts hideGraph vs graphs.hidden

function handleLegendClick(graph) { 
    var chart = graph.chart; 
    for(var i = 0; i < chart.graphs.length; i++) { 
    if (graph.id == chart.graphs[i].id) 
     chart.showGraph(chart.graphs[i]); 
    else 
     chart.hideGraph(chart.graphs[i]); 
    } 
    // return false so that default action is canceled 
    return false; 
} 

Was sind die Unterschiede zwischen diesen beiden Codes und Leistung klug sind, welche ist besser?

Antwort

1

Die showGraph/hideGraph Methoden hat die gleiche Wirkung wie validateNow nach jedem Aufruf aufrufen, während die Einstellung der hidden Eigenschaft nichts tut, bis Sie validateNow rufen Sie das Diagramm zu aktualisieren. In einer Schleifensituation ist das Ändern der Eigenschaft hidden in mehreren Diagrammen vor dem ersten Aufruf von validateNow einmal am Ende der Schleife wesentlich schneller als das Aufrufen der show/hide-Methode bei jeder Iteration.

+0

Ich sehe nicht im Quellcode, dass 'showGraph' /' hideGraph' Methoden intern 'validateNow()' Methode überhaupt aufrufen. Beide rufen am Ende 'initChart()' auf. (** v 3.21.4 **) – vsync

+0

Technisch korrekt ist 'initChart' eine interne Methode, die nicht für Endbenutzer gedacht ist (wenn sie nicht in der AmCharts-Dokumentation erwähnt wird, ist sie keine öffentliche Methode). Der Punkt ist, dass es effektiv dasselbe ist (oder * ähnlich *, wenn Sie wirklich Semantik argumentieren wollen), wie die Validierungsmethoden aufzurufen. Das Aufrufen einer internen Methode fügt der Antwort nicht wirklich etwas hinzu, so dass das Ansprechen der Methoden auf eine öffentliche Methode das Sprechen darüber erleichtert, wie sie funktionieren. – xorspark