繁体   English   中英

如何为json中的每个节点使用新的构造函数创建实例?

[英]How to create an instance with the new constructor for every node in a json?

我将要开始编写一个组织结构图的应用程序,并且我将使用该库 ,在该库中,他们提供的代码示例非常清楚:

        var options = new primitives.orgdiagram.Config();

        var items = [
            new primitives.orgdiagram.ItemConfig({
                id: 0,
                parent: null,
                title: "Scott Aasrud",
                description: "VP, Public Sector",
                image: "demo/images/photos/a.png"
            }),
            new primitives.orgdiagram.ItemConfig({
                id: 1,
                parent: 0,
                title: "Ted Lucas",
                description: "VP, Human Resources",
                image: "demo/images/photos/b.png"
            }),
            new primitives.orgdiagram.ItemConfig({
                id: 2,
                parent: 0,
                title: "Joao Stuger",
                description: "Business Solutions, US",
                image: "demo/images/photos/c.png"
            })
        ];

        options.items = items;
        options.cursorItem = 0;
        options.hasSelectorCheckbox = primitives.common.Enabled.True;

        jQuery("#basicdiagram").orgDiagram(options);

对我来说很奇怪的是items数组,我不会将该数组放在要构建App的主文件中。 实际上,数据将来自json,因此,请想象items数组来自单独的json文件,因此。 为了将数据放入json,然后在主文件中调用它,并为该json中的每个节点创建实例,例如new primitives.orgdiagram.ItemConfig({ . . . }) ,我该怎么做?

您有什么建议?

您可以使用[].map 它使用由每个数组项作为参数调用的函数返回的值创建一个新数组:

var items = JSON.parse(myjson).map(function(item) {
  return new primitives.orgdiagram.ItemConfig(item);
});

实际上,出于代码可读性的考虑,已经通过新对象定义了节点,以便使用户参考适当的对象类型的选项。 Chart也支持JSON对象。

        var options = new primitives.orgdiagram.Config();

        var items = [
            {
                id: 0,
                parent: null,
                title: "Scott Aasrud",
                description: "VP, Public Sector",
                image: "demo/images/photos/a.png"
            },
            {
                id: 1,
                parent: 0,
                title: "Ted Lucas",
                description: "VP, Human Resources",
                image: "demo/images/photos/b.png"
            },
            {
                id: 2,
                parent: 0,
                title: "Joao Stuger",
                description: "Business Solutions, US",
                image: "demo/images/photos/c.png"
            }
        ];

        options.items = items;
        options.cursorItem = 0;
        options.hasSelectorCheckbox = primitives.common.Enabled.True;

        jQuery("#basicdiagram").orgDiagram(options);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM