我希望我已经理解了问题:您希望在嵌套对象上有一个 ngRepeat 。如此线性化对象。
第一种方法是创建过滤器:
app.filter('linear', function() {
return function(value) {
var result = {};
for(var key in value) {
for(var cKey in value[key]) {
result[key+'_'+cKey] = value[key][cKey];
}
}
return result;
};
});
并在html中:
<li ng-repeat="(key, value) in marketplaces | linear">
{{key}}: {{value}}
</li>
但不幸的是当在过滤器中创建新元素时,AngularJS 会出现问题。您可能会在控制台中看到以下错误消息:
10 $digest iterations reached
无需黑客$$hash
您暂时无法实现该功能(如果我说错了请指正).
所以我认为现在的解决方案是在控制器中观察“市场”并使用与 ngRepeat 中使用的控制器相同的代码创建新对象:
$scope.$watch('marketplaces', function(value) {
var result = {};
for(var key in value) {
for(var cKey in value[key]) {
result[key+'_'+cKey] = value[key][cKey];
}
}
$scope.linearMarketplaces = result;
}, true);
在 HTML 中:
<li ng-repeat="(key, value) in linearMarketplaces">
{{key}}: {{value}}
</li>
有两种解决方案的 Plunker:http://plnkr.co/edit/pYWFhqSqKAa9gpzek77P?p=preview http://plnkr.co/edit/pYWFhqSqKAa9gpzek77P?p=preview