2015-03-11 3 views
1

Привет Я пытаюсь создать гистограмму с помощью угловых JS здесь мое требование, чтобы получить данные из URL и показать в виде гистограммыУстановка значений объема AngularJS этикетки

мне нужно получить SuiteName и установить его в $ scope.labels на самом деле мне нужно установить значения в

$scope.labels = ['test a', 'test b', 'test c']; 

но то, что мой код делает это

$scope.labels = ["'test a', 'test b', 'test c'"]

(котировки в попрошайничество и ENDI нг); (когда я проверяю в firebug, console.log кажется правильным) всего 3 имени считаются 1 строкой, потому что я добавляю к переменной из-за этого моя гистограмма x-axis, показывающая только 1 длинное имя вместо 3 имен, есть путь для достижения этого ниже мой код, что я пробовал

app.controller("BarCtrl", function ($scope, $http) { 
    var apiResponse = $http.get("http://166.62.36.83/DataService/DataService.asmx/GetSuiteCoverageJson?testsuiteid=9"); 

     apiResponse.success(function(responseData, status, headers, config) { 
      var testSuiteName = ""; 
      var totalAutomationCases = ""; 
      for (var i = 0, l = responseData.length; i < l; i++) { 
       testSuiteName = testSuiteName + "\'"+ responseData[i].testSuiteName +"\'" +","; 
       totalAutomationCases = totalAutomationCases + "'"+responseData[i].totalAutomationCases +"'" +","; 
       //$scope.labels = [responseData[i].testSuiteName]; 
       console.log(testSuiteName.substring(0,testSuiteName.length-1)); 
      } 
      $scope.labels = [testSuiteName.substring(0,testSuiteName.length-1)]; 

      console.log(totalAutomationCases.substring(0,totalAutomationCases.length-1)); 
      console.log(testSuiteName.substring(0,testSuiteName.length-1)); 
       $scope.series = ['Series A', 'Series B']; 
       $scope.data = [ 
       ['2','4','1'] 
       ]; 
     }); 

    }); 

ответ

1

Похоже, вы перекомпилировали задачу. Не нужно конкатенировать строки, как вы это делаете, вы на самом деле создаете одну большую строку. Если вам нужно Массив имен вы можете просто сделать что-то вроде этого:

$scope.labels = responseData.map(function(el) { 
    return el.testSuiteName; 
}); 

Array.prototype.map очень удобно здесь.

+0

может у также предложить мне, как установить значение $ scope.data Я пробовал такие же, как у предложенных выше как $ scope.data = responseData.map (функция (эш) { \t \t \t \t \t возвращение эля .testSuiteName; \t \t \t \t}); но я получаю ошибку: t не определено в firebug любое решение? –

+0

Что такое 't' переменная? – dfsq

+0

Не знаю, я думаю, что это во внутренней реализации угловых js. Однако работает ли такая же логика для установки данных? –

0

Кроме того, быстрое решение будет:

$scope.labels = testSuiteName.replace(/'/g, "").split(",") 

То есть, если вы Хеллбент на создание одной большой строки вместо обработки каждой записи в виде строки и толкая его в массив.

+0

Не работает! –

+0

Должно быть, если testSuiteName = "'test a', 'test b', 'test c'", вы можете попробовать его в консоли, просто введите «test a», «test b», «test c». замените (/ '/ g, "") .split (",") первая команда замены удаляет все', затем вторая разбивает ее на массив с помощью разделителя, –

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