Vnořené JSON řetězec v tabulce dat

hlasů
0

Prosím pomozte. Jsem schopen odpovídat JSON analyzovaných hodnot na jméno zákazníka s použitím dat tabulky. Byl jsem schopen naplnit sloupci tabulky s kontaktními údaji, ale analyzovat data, je shodný pro oba účty v tabulce vytvořené kódem vidíte na obrázku. Existuje lepší způsob, jak procházet data, takže se zobrazí správně.

Viděl jsem několik příkladů, jak to udělat s jednoduchou tabulku, ale rád bych, aby třídění schopnosti datových tabulek, pokud je to možné. Jakákoliv pomoc bude velmi ocenil.

<!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>
Položena 27/11/2018 v 18:02
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Při předání funkce ke sloupu, argument je předán k této funkci, která představuje jeden záznam vašich dat. Takže není třeba iterovat přes vaše data sami, jQuery dělá, že pro vás.

$('#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;
    }}
  ]
});

Pokud tak učiníte iteraci sami, bude funkce ukončena v příkazem return. Takže pokaždé, funkce se nazývá to prostě vidět na první položku a vrátí jej zastavit v tomto bodě.

Odpovězeno 27/11/2018 v 18:26
zdroj uživatelem

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