【发布时间】:2016-04-12 17:40:17
【问题描述】:
到目前为止,我已经用ng-repeat-start 解决了这个问题。目前看起来是这样的:
控制器
$scope.providers = [
'Site Hosting',
'Best Hosting',
'Fantastic Hosting'
];
$scope.providerColumns = {
price: {
text: 'Price',
exposed: true
},
site: {
text: 'Website',
exposed: true
},
phone: {
text: 'Phone Number',
exposed: false
}
};
模板
<div class='table-header-row'>
<div class='first-header-cell' ng-repeat='obj in firstCellsHeaders'>
{{obj.text}}
</div>
<div class='middle-header-cell' ng-repeat-start='prov in providers' ng-if='providerColumns.price.exposed'>
{{prov}} {{providerColumns.price.text}}
</div>
<div class='middle-header-cell' ng-if='providerColumns.site.exposed'>
{{prov}} {{providerColumns.site.text}}
</div>
<div class='middle-header-cell' ng-repeat-end ng-if='providerColumns.phone.exposed'>
{{prov}} {{providerColumns.phone.text}}
</div>
<div class='last-header-cell' ng-repeat='obj in lastCellsHeaders'>
{{obj.text}}
</div>
</div>
<div class='table-row'>
<div class='first-cells' ng-repeat='obj in firstCells'>
{{obj.text}}
</div>
<div class='middle-cells' ng-repeat-start='prov in providers' ng-if='providerColumns.price.exposed'>
{{data[prov].price}}
</div>
<div class='middle-cells' ng-if='providerColumns.site.exposed'>
{{data[prov].site}}
</div>
<div class='middle-cells' ng-repeat-end ng-if='providerColumns.phone.exposed'>
{{data[prov].phone}}
</div>
<div class='last-cells' ng-repeat='obj in lastCells'>
{{obj.texLine2}}
</div>
</div>
它本质上是一个由 div 构建的表格,以便于在角度完成渲染后重新排序列。
现在我意识到ng-repeat-start 中表示的对象比我之前想象的更动态,我希望能够有一个 squared ng-repeat,即没有嵌套元素的嵌套重复,很像在tbody 元素上使用ng-repeat 的常用解决方案,然后在其中的tr 元素上使用额外的ng-repeat,这本质上是一种扁平的嵌套效果。我需要一个水平元素的解决方案,最好是divs。但是,我不能以任何方式将它们捆绑在一起,因此不能嵌套 divs 或类似的东西。理想情况下,它看起来像这样:
<div ng-repeat='prov in providers' ng-repeat='col in providerColumns' ng-if='col.exposed'>
{{data[prov][col]}}
</div>
有什么想法吗?
【问题讨论】:
-
展平我的数据不是一种选择
-
能把你的JS代码或者正在迭代的对象贴出来吗?
标签: html angularjs angularjs-ng-repeat