0

データをリロードし、グラフの表示タイプを変更するための c3 ディレクティブで問題に直面しています。http://plnkr.co/edit/wWJx3zU3Sm1cN9ZCtvoh?p=previewで私のプランカーをご覧ください。

データをリロードするために$scope.refreshInData関数を使用し、チャートタイプを変更するために関数を使用してい$scope.transformます。しかし、どういうわけかこれらは機能していません。Github の例から、変換機能を使用してグラフの種類を変更しようとしましたが、機能させることができません。助けてください...

$scope.transform = function(filterSelected, preChartName) {
    alert('inside change Chart  ' + preChartName);
    c3SimpleService['#' + preChartName].transform(filterSelected, filterSelected);
    //  preChartName.load({ data.type : filterSelected });

}
4

2 に答える 2

2

C3 transform() は 1 つのパラメーターを取ることができ、あなたのケースでは - そうすべきです。

$scope.transformの場合、次のように使用する必要があります。

c3SimpleService['#' + preChartName].transform(filterSelected.value);

2 つのことに注意してください。

  1. transform は 1 つのパラメーターを取り、それは文字列 - チャート タイプの名前です
  2. あなたが渡しているのはオブジェクトなので、そのフィールドにアクセスする必要があります

$scope.refreshInData()に関しては、問題は少し異なります。ここで修正する必要があるのは、ID を直接使用するのではなく、c3SimpleServiceサービスを介してチャートを取得することだけです。これにより、AngularJS レイヤーを介したアクセスが許可されます。

c3SimpleService['#' + preChartName].load({ columns : cityData });

Plnkrで動作しているのを見ることができます

于 2015-01-28T12:29:49.917 に答える
0

次のようなスコープ変数を設定する必要があります: isChart その値は true/false です。このスコープを ng-if 条件で使用できます。リクエスト/変更ごとに、リクエストが成功した後にfalseを変更する必要があります。また、変更/リクエストごとにグラフ データ配列をリセットする必要があります。それは完全に機能します。

于 2016-11-28T09:25:10.910 に答える