2016-10-13 2 views
0

Пока я пытаюсь загрузить данные фильтра в ng-table в CSV, я получаю раздельную строку в две строки.Угловой JS JSON2CSV

выход будет, как показано ниже

Row1 содержит три колонки

Item 1 | 12222-12228-14567-124568-18680-20940-18717-ABCDED-sdf_dsfsdf | X-Large 

Вместо подвожу

первый ряд

Item 1 | 12222-12228-14567-124568-18680-20940-18717-ABCDED-sdf_dsfsdf | 

второй ряд

X-Large 

вот мой код

var data = [{ "name": "Item 1", "color": "12222-12228-14567-124568-18680-20940-18717-ABCDED-aSFDasdf_sdfsdf_dsfsdf", "size": "X-Large" }, 
    { "name": "Item 2", "color": "Green", "size": "X-Large" }, 
    { "name": "Item 3", "color": "Green", "size": "X-Large" }]; 

$scope.downloadData = function (data){ 
     var csv = $scope.JsonToCsv(data);   
} 

$scope.JsonToCsv = function(objArray) { 
var array = typeof objArray != 'object' ? JSON.parse(objArray) :objArray; 
     var str = ''; 
     var line = ''; 
     var head = array[0]; 
     for (var index in array[0]) { 
      var value = index + ""; 
      line += '"' + value.replace(/"/g, '""') + '",'; 
     } 
     line = line.slice(0, -1); 
     str += line + '\r\n'; 
     for (var i = 0; i < array.length; i++) { 
      var line = ''; 
      for (var index in array[i]) { 
       line += array[i][index] + ','; 
      } 
      line = line.slice(0, -1); 
      str += line + '\r\n'; 
     } 
     return str; 
    } 

Может кто-нибудь помочь мне найти то, что пошло не так в моем коде?

+1

Я только запустить этот код в [jsfiddle] (https://jsfiddle.net/x74y0fjs/) и, кажется, работает. Возможно, стоит добавить немного больше кода, например, как эта функция вызывается в вашем контроллере. – Corporalis

ответ

0

У меня есть рабочий код для этого, я изменился в соответствии с вашими потребностями. Надеется, что это работает для вас слишком

  var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 
      var str = ''; 
      var line = ""; 
      for (var index in array[0]) { 
       line += index + ','; 
      } 
      line = line.slice(0, -1); 
      str += line + '\r\n'; 
      for (var i = 0; i < array.length; i++) { 
       var line = ""; 
       for (var index in array[i]) { 
        line += '"' + array[i][index] + '",'; 
       } 
       line.slice(0, line.length - 1); 
       str += line + '\r\n'; 
      } 
      if (str == '') { 
       alert("oops"); 
       return; 
      } 
      console.log(str); 
      return str; 

Спасибо :)