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

amcharts hideGraph 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; 
} 

1が優れているこれらの2つのコードと、パフォーマンスが賢明との違いは何ですか?

答えて

1

showGraph/hideGraphの方法は、あなたがチャートを更新するvalidateNowを呼び出すまでhiddenプロパティを設定すると、何もしないのに対し、各呼び出しの後validateNowを呼び出すのと同じ効果があります。

ループの終了時にvalidateNowを呼び出す前に、複数のグラフのhiddenプロパティを最初に変更すると、各繰り返しでshow/hideメソッドを呼び出すよりも大幅に高速です。

+0

'showGraph' /' hideGraph'メソッドが 'validateNow()'メソッドを内部的に呼び出すのは、ソースコードにはありません。彼らは両方とも 'initChart()'を最後に呼び出します。 (** v 3.21.4 **) – vsync

+0

技術的には正しいですが、 'initChart'は、エンドユーザ向けではない内部メソッドです(AmChartsのドキュメントに記載されていない場合、パブリックメソッドではありません)。重要なのは、バリデーションメソッドを呼び出すことと事実上同じ(または、セマンティクスを主張したい場合は同様の*)であることです。内部メソッドを呼び出すことは、実際には答えに何も追加しないので、メソッドをパブリックメソッドに関連付けることで、それらがどのように簡単に機能するかについて話し合うことができます。 – xorspark