dar*_*man 5 jquery json d3.js typescript powerbi
我正在 Microsoft Power BI 中创建自定义视觉对象。创建 api 使用 typescript 和 d3 库。我也在使用jquery
我正在尝试创建一个分层树来表示拖入视觉对象的字段。因此树的深度是在运行时决定的,所以它不知道它有多少层。
我已成功将虚拟数据排列到嵌套的 JSON 数组中。
这是我执行 console.log(finalViewModel) 时控制台的屏幕截图
[{ "text": "France","id": 591, "parent": 0, "identity": {long text},
"nodes"
[{"text": "Bread", "id", 478, "parent": 591, "identity: {long text},
"nodes" []},
{"text": "Nocco", "id", 498, "parent": 591, "identity: {long text},
"nodes" []},
{"text": "Red Wine", "id", 718, "parent": 591, "identity: {long
text},
"nodes" []}]},
{"text: "Germany", "id" .....so on and so forth
Run Code Online (Sandbox Code Playgroud)
这就是我在控制台中对数据进行 JSON.stringify 时的样子,而且我只使用了 2 个字段,因此不会太混乱。
“身份”:{长文本},不会这样显示。标识字段用于 Power BI 选择管理器,因此当单击树中的某些内容时,它将呈现为其他视觉效果。长文本是保存特定项目标识信息的超长数组的替代品。
现在问题来了,我想将 JSON 数据转换为 ul 和 li 元素。像这样:
<ul>
<li>France</li>
<ul>
<li>Baguette</li>
<li>Nocco</li>
<li>Red Wine</li>
</ul>
<li>Germany</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我在网上找到了很多此类问题的解决方案,但似乎没有一个能满足我的需求。
谁能帮我编写一个有效的代码片段?
提前致谢
这是一个如何使用纯 JavaScript 实现的演示。
var createSublist = function(container, args) {
var ul = document.createElement('ul');
for(var j = 0; j < args.length; j++) {
var row = args[j];
var li = document.createElement('li');
li.innerText = row.text;
var nodes = row.nodes;
if(nodes && nodes.length) {
createSublist(li, nodes);
}
ul.appendChild(li);
}
container.appendChild(ul);
};
var data =[
{
"text":"France",
"nodes":[
{
"text":"Bread"
},
{
"text":"Nocco"
}
],
},
{
"text":"Italy",
"nodes":[
{
"text":"Pizza"
},
{
"text":"Wine",
"nodes": [
{
"text": "Red"
},
{
"text":"White"
}
]
}
]
}
];
var container = document.getElementsByClassName('container')[0];
if(container)
{
createSublist(container, data);
}
else
{
console.log('Container has not been found');
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
</div>Run Code Online (Sandbox Code Playgroud)