2015-04-24 2 views
0

я следующий запрос HTTP, который я использую, чтобы заполнить мою диаграмму:Highcharts-нг нагрузки Аякса данных

$scope.series = ['Moduler tager', 'Gns.score']; 
$scope.activity_data = []; 
$scope.activity_ticks = []; 
var tmp_data = []; 
$scope.bar = []; 
$scope.line = []; 
$http.get(api.getUrl('findSelfActivityByDivisions', null)) 
    .success(function (response) { 
     response.forEach(function(y){ 
      var i = 0; 
      var log_date = y.date.substr(0, y.date.indexOf('T')); 
      var date = new Date(log_date); 
      var logg_date = moment(date).fromNow(); 
      var indexOf = tmp_data.indexOf(logg_date); 
      var found = false; 
      var index = 0; 
      if(tmp_data.length > 0){ 
       tmp_data.forEach(function(current_data){ 
        if(current_data[0] == logg_date){ 
         found = true; 
        } 
        if(!found){ 
         index++; 
        } 
       }) 
      } 
      if(found){ 
       var tmp = tmp_data[index]; 
       tmp[1] = tmp[1] + y.num_modules; 
       tmp[2] = tmp[2] + y.num_score_modules; 
       tmp[3] = tmp[3] + y.sum_score; 
       tmp_data[index] = tmp; 
      } 
      else 
      { 
       var tmp = [logg_date, y.num_modules, y.num_score_modules, y.sum_score]; 
       tmp_data.push(tmp); 
      } 
     }) 

     var line = []; 
     var bar = []; 
     tmp_data.forEach(function(data){ 
      $scope.activity_ticks.push(data[0]) 
      line.push(data[1]); 
      var avg_score = data[3]/data[2]; 
      if(isNaN(avg_score)){ 
       avg_score = 0; 
      } 
      bar.push(avg_score); 

     }); 

     $scope.line = line; 
     $scope.bar = bar; 
    }); 

А теперь у меня есть следующие диаграммы конфигурации:

$scope.chartConfig = { 
    options: { 
     chart: { 
      type: 'areaspline' 
     } 
    }, 
    series: [{ 
     data: $scope.bar, 
     type: 'column' 
    },{ 
     data: $scope.line, 
     type: 'line' 
    }], 
    xAxis: { 
     categories: $scope.activity_ticks 
    }, 
    title: { 
     text: 'Hello' 
    }, 

    loading: false 
} 

К сожалению, ни один из графики показывают (им угадать, что что-то делать с датой пришедшего после загрузки)

enter image description here

Может ли кто-нибудь помочь мне?

+0

Была ли эта деятельность прежде чем ваш '$ http.get()'? Ошибки консоли? Можете ли вы поделиться Plunker? – scniro

+0

@salniro no console errors, и он работал до моего $ http.get(), также я знаю, что данные, возвращаемые http.get, действительны. О plunker я не уверен, как это сделать: S –

+0

@salniro ive добавил изображение диаграммы –

ответ

2

Ваш $scope.chartConfig скорее всего будет стрелять до success. Обратный вызов вашего $http.get(api.getUrl('findSelfActivityByDivisions', null)) завершается. Я предполагаю, что $scope.chartConfig находится в контроллере. Попробуйте поместить $watchGroup на значения, затем примените логику рендеринга диаграммы, как только эти значения будут решены. Примером может включать в себя

Обратите внимание, что $watchGroup находится в пределах Угловая от 1,3

$scope.$watchGroup(['line', 'bar'], function(newValues, oldValues) { 

    // newValues[0] --> $scope.line 
    // newValues[1] --> $scope.bar 

    if(newValues !== oldValues) { 
     $scope.chartConfig = { 
      options: { 
       chart: { 
        type: 'areaspline' 
       } 
      }, 
      series: [{ 
       data: $scope.bar, 
       type: 'column' 
      },{ 
       data: $scope.line, 
       type: 'line' 
      }], 
      xAxis: { 
       categories: $scope.activity_ticks 
      }, 
      title: { 
       text: 'Hello' 
      }, 
      loading: false 
     } 
    } 
}); 
+0

Должна ли «оригинальная конфигурация» по-прежнему находиться в контроллере? –

+0

Я полагаю, что ваш объект «chartConfig» может быть предварительно определен без ваших переменных данных, а затем сделать что-то вроде '$ scope.chartConfig.options.series [0] .data = $ scope.bar' внутри watch @MarcRasmussen – scniro

+0

это сработало как шарм, я могу задать вам последний вопрос? У меня есть круговая диаграмма, но ярлыки круговой диаграммы просто говорят, что slice, как установить категории для моего piechart в конфиге? –

Смежные вопросы