index.js
var app = angular.module('plunker', []); app.controller('MainCtrl', function($scope) { $scope.name = 'World'; $scope.data =[{"Id":1,"Title":"en-US","Description":"UnitedStates","MyValues":[{"Id":100,"Value":"Save"}]}, {"Id":1,"Title":"en-UK","Description":"UK","MyValues":[{"Id":102,"Value":"Delete"}]}] $scope.cols = Object.keys($scope.data[0]); $scope.notSorted = function(obj){ if (!obj) { return []; } return Object.keys(obj); } });
index.html
<table border=1> <thead> <tr> <th ng-repeat="key in notSorted(cols)" ng-init="value=cols[key]">{{value}}</th> </tr> </thead> <tbody> <tr ng-repeat="row in data"> <td ng-if="!$last" ng-repeat="dat in notSorted(row)" ng-init="value=row[dat]">{{value}}</td> </tr> </tbody> </table>
它给了我完美的表,但问题出在一栏中MyValues。我有数据列表,并想创建具有所有List值的嵌套表。
MyValues
我该如何实现?要检查是否有列具有列表(如果是),然后生成嵌套表。检查这个矮人http://plnkr.co/edit/Ixvp8B0dRwOBDHflmu2j?p=preview
您可以这样编写标记:
<table> <thead> <tr> <th ng-repeat="(k,v) in data[0]">{{k}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in data"> <td ng-repeat="(prop, value) in item" ng-init="isArr = isArray(value)"> <table ng-if="isArr"> <thead> <tr> <th ng-repeat="(sh, sv) in value[0]">{{sh}}</th> </tr> </thead> <tbody> <tr ng-repeat="sub in value"> <td ng-repeat="(sk, sv) in sub">{{sv}}</td> </tr> </tbody> </table> <span ng-if="!isArr">{{value}}</span> </td> </tr> </tbody> </table>
完整代码:https : //gist.github.com/anonymous/487956892d760c17487c