我的页面中有一个dhtmlx甘特图,通常它可以正常运行,但是现在当我有一个带有嵌套数组的JSON文件时,所有输出将改为unrecognized。我正在尝试填充official name

谁能帮我这个?非常感谢你。

JSON格式

{
    "data": [
        {
            "assign_to": {
                "id": 3,
                "employee_id": "28141",
                "official_name": "Hal Jordan",
            },
            "task": {
                "id": 1,
                "name": "Modeling",
                "description": "3d modeling work"
            },
            "start_date": "2017-06-15",
            "end_date": "2017-06-19"
        },
        {
            "assign_to": {
                "id": 3,
                "employee_id": "28144",
                "official_name": "Kyle Rayner",
            },
            "task": {
                "id": 8,
                "name": "Composting",
                "description": null
            },
            "start_date": "2017-06-01",
            "end_date": "2017-06-08"
        }
    ]
}


Java脚本

 gantt.config.columns = [
       {name: "assign_to.official_name", label: "Assign To", align: "left", width: 70},
    ];

function initializeGantt() {
   gantt.init("my_scheduler");
   gantt.load("/dashboard/ganttchart_list/5/?format=json");
}

initializeGantt();


的HTML

<div id="my_scheduler" style='width:1405px; height:245px;'></div>

最佳答案

dhtmlx甘特图不支持嵌套结构,因此您需要在将项目加载到甘特图之前对其进行预处理。
由于您知道自己拥有哪种格式以及gantt(https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json)期望哪种格式,因此这不是问题。

最重要的事情


确保数据项具有“ id”属性
当您像这样定义列名称时:

{name:“ assign_to.official_name”,标签:“ Assign To”,对齐:“ left”,宽度:70},

列名称无法映射到嵌套对象的属性,因此,您必须在加载过程中将结构展平,非常粗略地讲,可以通过以下方式完成:
http://snippet.dhtmlx.com/129d2e043


或者定义一个列模板,该模板将从嵌套对象中获取价值:
http://snippet.dhtmlx.com/9e8e65e85


请检查控制台输出以获取结果数据集

关于javascript - dhtmlxgantt填充嵌套的JSON数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44626902/

10-10 05:36