gpt4 book ai didi

javascript - 如何使用 AngularJS 将 JSON 树显示为嵌套

转载 作者:行者123 更新时间:2023-11-27 23:19:11 24 4
gpt4 key购买 nike

假设我有一个 JSON 树结构如下:

var myTree = {
"node": {
"name": "A",
},
"children": [
{
"node": {
"name": "B",
},
"children": []
},
{
"node": {
"name": "C",
},
"children": []
}
]
}

这只是一个显示树结构的示例。但实际上,树可能要大得多,并且具有任意(未知)深度。

我希望我的 angularJS 应用程序将其显示为一组嵌套 <ul>如下:

<ul>
<li>A
<ul>
<li>B</li>
<li>C</li>
</ul>
</li>
</ul>

我不关心空白。我真正关心的是它显示为嵌套的项目符号点。

我还创建了以下递归函数,将 JSON 转换为正确的 HTML:

self.HTMLTree = function(jsonTree) {
var retStr = '<li>' + jsonTree.node.name;
if (('children' in jsonTree) && (jsonTree.children.length > 0)) {
retStr += '<ul>';
for (childIndex = 0; childIndex <= jsonTree.children.length - 1; childIndex++)
retStr += self.HTMLTree(jsonTree.children[childIndex]);
retStr += '</ul>';
}
retStr += '</li>';
return retStr
}

在我的 HTML 中,我这样调用它:

{{myCtrl.HTMLTree(myCtrl.myTree)}}

当我加载此页面时,我没有看到项目符号,而是看到 HTMLTree() 返回的整个 HTML呈现为文本。为什么?如何让它渲染实际的子弹?

我构建 HTML 树的方法是否正确?感觉不对。我觉得我应该能够以某种方式将其纯粹地放在 Angular View 文件中,而无需将 HTML 编码到我的 Javascript 中。

这是JSFiddle

最佳答案

这样尝试一下,找到示例代码here .

HTML:

<body ng-app="myApp">
Hello World!
<div ng-controller="MyController as myCtrl">
<ul ng-bind-html="myCtrl.HTMLTree(myCtrl.myTree)"></ul>
</div>
</body>

JS:

myApp = angular.module('myApp', []);


myApp.controller('MyController', function ($scope, $sce) {
var self = this;

self.myTree = {
"category": {
"name": "A",
},
"children": [{
"category": {
"name": "B",
},
"children": []
}, {
"category": {
"name": "C",
},
"children": []
}]
}

self.HTMLTree = function (jsonTree) {
var retStr = '<li>' + jsonTree.category.name;
if (('children' in jsonTree) && (jsonTree.children.length > 0)) {
retStr += '<ul>';
for (childIndex = 0; childIndex <= jsonTree.children.length - 1; childIndex++)
retStr += self.HTMLTree(jsonTree.children[childIndex]);
retStr += '</ul>';
}
retStr += '</li>';
return $sce.trustAsHtml(retStr);
}
});

关于javascript - 如何使用 AngularJS 将 JSON 树显示为嵌套 <ul>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com