corda Nested JSON a Tabela de Dados

votos
0

Por favor ajude. Eu sou incapaz de combinar valores interpretados JSON para nome do cliente, utilizando tabelas de dados. Eu era capaz de preencher coluna da tabela com informações de contato, mas analisados ​​dados é idêntica para ambas as contas na tabela criada pelo código mostrado. Existe uma melhor maneira de percorrer os dados para que ele exibe corretamente.

Eu vi alguns exemplos de fazer isso com uma tabela simples, mas eu gostaria de manter a capacidade de ordenação de tabelas de dados, se possível. Qualquer ajuda será muito apreciada.

<!DOCTYPE html>
<html lang=en>
<head>
    <meta charset=UTF-8>
    <meta name=viewport content=width=device-width, initial-scale=1.0>
    <meta http-equiv=X-UA-Compatible content=ie=edge>
    <title>Table 01</title>
</head>
<body>

<link href=https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css rel=stylesheet/>

<script src=https://code.jquery.com/jquery-3.3.1.js></script>
<script src=https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js></script>

<table id=tableId class=table table-condensed responsive></table>

</body>
<script>

    var data01 = [
  {
  name: EXAMPLE Mickey,
  due: 2018-11-22T19:00:00.000Z,
  labels: [
    {
    name: Salesperson_1,
    color: green
    }
    ],
  pluginData: [
          {
          value: {\billContact\:\Mickey Mouse\,\billCompany\:\MM Clubhouse\},
          access: shared
          }
      ]
  },
  {
  name: EXAMPLE Carl,
  due: 2018-11-25T19:00:00.000Z,
  labels: [
    {
    name: Salesperson_2,
    color: yellow
    }
    ],
  pluginData: [
          {
          value: {\billContact\:\Carl Grimes\,\billCompany\:\Rick's Group\},
          access: shared
          }
      ]
  }
];


$('#tableId').DataTable({
  data: data01,
  columns: [
    {data: name},
    {data: due},
    {data: labels.0.name},
    {data: pluginData.0.value},  
    {data: function(){

      for (var i=0; i < data01.length; i++){
        var values = data01[i].pluginData[0].value;


        var parsedVal = JSON.parse(values);

        var contact = parsedVal.billContact;      

        return contact;

        //console.log(contact);
      }
    }}
  ]
});

</script>


</html>
Publicado 27/11/2018 em 18:02
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Quando você passar uma função para uma coluna, um argumento é passado para essa função que representa uma entrada de seus dados. Portanto, não há necessidade de iterar sobre seus dados por si mesmo, jQuery está fazendo isso para você.

$('#tableId').DataTable({
  data: data01,
  "columns": [
    {"data": "name"},
    {"data": "due"},
    {"data": "labels.0.name"},
    {"data": "pluginData.0.value"},  
    {"data": function (row){

      let values = row.pluginData[0].value;

        let parsedVal = JSON.parse(values);

        let contact = parsedVal.billContact;      
        return contact;
    }}
  ]
});

Se você fizer a iteração por si mesmo, a função será encerrada no instrução de retorno. Então toda vez que a função é chamada apenas ver a primeira entrada e devolvê-lo e parar nesse ponto.

Respondeu 27/11/2018 em 18:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more