2016-10-05 7 views
1

私のスクリプトでhtmlファイルに問題があります。問題は、変数をjQueryで更新し、そこからチャートを作成することです。スクリプトの前にjQueryの優先順位をつける

グラフの作成には角度を使用していますので、別のjQueryに配置することはできません。コードの

パート:私が達成しようとしています何

var chartData = []; 

      $.getJSON('../json/testData.json', function (json) { 
       for (var i=0; i < json.length; i++){ 
        var j = json[i].Value; 
        chartData.push(j); 
       } 
      }); 

angular.module("app", ["chart.js"]).controller("BarCtrl", function ($scope) { 

      $scope.labels = ['2006', '2007', '2008', '2009', '2010', '2011', '2012']; 
      $scope.series = ['Series A', 'Series B']; 
      $scope.data = [ 
       [65, 59, 80, 81, 56, 55, 40], 
       [28, 48, 40, 19, 86, 27, 90], 
       chartData 
      ]; 
     }); 

:chartDataを更新し、JSONからデータを取得し、チャートに更新された変数を置きます。

これは現在どのように機能していますか? - >それはすべて、jQueryを行うので、私は空の配列を持っています。

私の研究: jQueryの変数とスコープを操作しようとしていました。結果は変わりません。 関数にすべてを入れると、angleは機能しません。

あなたがデータを取得し、スコープの上にそれを置くために、コントローラ内部で $httpサービスを使用していないのはなぜ
angular.module("app", ["chart.js"]).controller("BarCtrl", function ($scope, $http) { 

     $http.get('../json/testData.json').then(function (response) { 
      for (var i = 0; i < response.data.length; i++) { 
       var j = response.data[i].Value; 
       jsondata.push(j); 
      } 
     }); 
+0

あなたは '移動してみてくださいました( 'for'ループの直後、' getJSON'を 'angular.module'コールバックに移動します)両方のプロセスが非同期で実行されるので、彼らがお互いに待つ方法。最大のjQuery約束が言及された;それは良い選択だ。 –

+0

非同期(getJSON)コードと同期コード(アルゴリズム全体)が混在しています。約束を見てください(しかしjQueryの約束はありません) –

答えて

1

:以下、ポストから

ソリューション

angular.module("app", ["chart.js"]).controller("BarCtrl", function ($scope, $http) { 
    $scope.data = []; 
    $http.get('../json/testData.json').then(function (response) { 
     for (var i = 0; i < response.data.length; i++) { 
      var j = response.data[i].Value; 
      chartData.push(j); 
     } 
    }); 
}); 
+0

ありがとうございます。私はあなたのような解決策を見つけることができませんでした。 これは完璧に動作します! – Maltesse

+0

@Maltesse、多分あなたは答えを受け入れるか受け入れることができます –

+0

私は努力していますが、私は15の評判を持たなければなりません。申し訳ありません – Maltesse

関連する問題