我有:
businesses: [
{businessName: 'A', "address":[loc1, loc2, loc3]},
{businessName: 'B', "address":[loc1, loc2]},
{businessName: 'C', "address":[loc1]}
};
我想用输出重复此对象:
A | street, city, zip, state
A | street, city, zip, state
A | street, city, zip, state
B | street, city, zip, state
B | street, city, zip, state
C | street, city, zip, state
换句话说,我希望在具有ng-repeat的表格中将此对象显示为平面。
我是否必须自己压扁它,或者ng-repeat是否有能力做到这一点?
理想情况下,我可以做一些像
这样的事情ng-repeat business in businesses
business.businessName | business.address.City | business.address.State
通过指定地址,它应该知道我想要它们全部。
否则,我如何压扁像这样的物体?
谢谢!
答案 0 :(得分:4)
好像你可以稍微处理一下,比如:
var flatBusinesses = [];
for (business in businesses) {
for (address in business.addresses) {
flatBusinesses.push ({name: business.name, address: address.City, state: address.State}
}
}
然后在视图中重复flatBusinesses
答案 1 :(得分:3)
下划线库有许多用于处理javascript数组和对象的函数,这些函数可以很好地作为angular的补充:
您需要下载该库并将其添加到您的项目中。
然后你可以写:
var flatBusinesses = _.flatten(_.pluck(businesses, 'address'));
您应该能够将下划线库添加到范围:
$scope._ = _;
然后将其直接添加到您的模板中:
<div ng-repeat="business in _.flatten(_.pluck(businesses, 'address'))">
{{business.businessName}} | {{business.address.City}} | {{business.address.State}}
</div>
修改强>
所以,我没有仔细阅读你的问题,在你的情况下,扁平和拔除不会削减它。
我把一个小提琴放在下面用下划线来使它起作用,但最终的结果是不比rquinn的反应更好。
无论如何,如果你想看一下,这就是小提琴:http://jsfiddle.net/pna7f5h3/