Angular中无法展示JSON嵌套数据至表格,请求排查问题
问题分析与修复方案
咱们一步一步拆解你代码里的问题,都是些容易踩的小坑:
1. Controller 里的数组访问与语法错误
你的$scope.data是数组类型(外层包裹了[]),直接写$scope.data.Folder根本找不到对应数据,得先取数组里的第一个元素,再访问Folder属性。另外你的forEach语法也不完整,缺了闭合的大括号和括号。
修复后的 Controller 代码:
$scope.Folder = []; // 先取data数组的第一个元素,再访问内部的Folder数组 angular.forEach($scope.data[0].Folder, function(choose) { $scope.Folder.push(choose); }); // 补上缺失的闭合括号与大括号
2. View 里的表格结构逻辑错误
你现在的写法是在单个<tr>的每个<td>里循环所有Folder数据,这会导致所有Name挤在同一个单元格、所有CPU挤在第二个单元格,完全不符合表格「一行对应一条数据」的逻辑。应该循环<tr>标签,让每条Folder数据对应表格的一行,再在每行的<td>里展示对应属性。
另外你的<input>标签写法也有误:input是自闭合标签,不能把{{g.CPU}}放在标签内部,要绑定值的话用ng-model或者value属性。
修复后的 View 代码:
<tbody> <!-- 循环<tr>,每条Folder数据对应一行 --> <tr ng-repeat="g in Folder" role="row" class="odd"> <td class="sorting_1">{{g.Name}}</td> <td> <input class="form-control" type="text" ng-model="g.CPU"> </td> <td> <input class="form-control" type="text" ng-model="g.RAM"> </td> </tr> </tbody>
额外优化:简化数据绑定逻辑
其实你完全不用手动循环push数据,直接赋值就能完成绑定,代码更简洁:
// 直接将嵌套的Folder数组赋值给$scope.Folder $scope.Folder = $scope.data[0].Folder;
这样就能正常把嵌套的 JSON 数据展示到表格里啦~
内容的提问来源于stack exchange,提问作者WhoAmI
相关产品推荐
相关产品推荐

