对象数据结构数组
$scope.obj = { "section1":{ "category1":{ "key1":"value1", "key2":"value2" }, "category2":{ "key1":"value3", "key2":"value4" } }, "section2":{ "category3":{ "key1":"value5", "key2":"value6" } } ... };
ng-repeat循环时的结构
数据结构
<ul ng-repeat="(key,value) in obj"> <li ng-repeat="(subkey,subValue) in value" > {{key}} {{subkey}} {{subValue.key1}} {{subValue.key2}} </li> </ul>
这样循环输出的结果布局
<ul> <li> section1 category1 value1 value2 </li> <li> section1 category2 value3 value4 </li> </ul> <ul> <li> section2 category3 value5 value6 </li> </ul>
而我但愿的结果是li在一个ul中循环,这样能够避免当li的个数为奇数时,产生的布局问题。ui
最后解决的方法是改造对象,将它生成为一个新的数组进行循环。code
$scope.buildData = function(){ var newArr = []; angular.forEach($scope.obj,function(value,key){ angular.forEach(value,function(subvalue,subkey){ newArr.push({ "section": key, "category": subkey, "key1":subvalue["key1"], "key2":subvalue["key2"] }) }); }); return newArr; }; $scope.newObj = $scope.buildData(); //新的循环方法 <ul> <li ng-repeat="data in newObj "> {{data.section}} {{data.category}} {{data.key1}} {{data.key2}} </li> </ul>