我有下表需要两个不同列的ng-repeat。我尝试了ng-repeat-start / ng-repeat-end的新方法是徒劳的: 注意:我有两个不同的数据提供者,有两个不同的连接。我被迫使用这种方法,因为我没有完全控制来编辑控制器或合并它们,控制器也是两个不同的API的一部分。
<table ng-switch-default>
<tbody >
<tr ng-repeat="name in names" ng-repeat="a in glamors">
<td>{{a.glamor}}</td>
<td>{{name.first}}</td>
</tr>
</tbody>
</table>
使用多重复重复的最佳方法是什么?
答案 0 :(得分:1)
在同一个结构上使用ng-repeat 2次是一个不好的实践,因为有人可能会覆盖另一个人正在做的事情。
我建议创建将名称和glamrs解析为一个对象的服务,然后将其发送到控制器以在视图中显示。
答案 1 :(得分:1)
假设您的对象是:
$scope.names = [
{first:'Fahad', last:"Khan"},
{first:'Fahad2', last:"Khan2"},
{first:'Fahad3', last:"Khan3"}
];
$scope.glamors = [
{glamor:'glamour1'},
{glamor:'glamour2'},
{glamor:'glamour3'}
];
将魅力与名称合并:
var count = $scope.names.length;
for (var i=0; i<count; i++) {
$scope.names[i].glamor=$scope.glamors[i].glamor;
}
以下是您的所有对象:
的console.log($ scope.names);
将其用作:
<table>
<tbody >
<tr ng-repeat="name in names">
<td>{{name.glamor}}</td>
<td>{{name.first}}</td>
</tr>
</tbody>
</table>
这是工作Fiddle
希望这有帮助。
答案 2 :(得分:-1)
你不只是想把一个嵌入另一个里面吗?类似的东西:
<table>
<tbody>
<tr ng-repeat="n in names">
<td>
<table>
<tbody>
<tr ng-repeat="a in glamors">
<td>{{a.name}}</td>
<td>{{n.name}}</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
正确地做你的造型,你真的不能说它们是独立的桌子。
如果不这样做,如果需要单个表,那么您将不得不合并数据,正如您在其他一条评论中提到的那样,您从两个来源获取数据,这不是问题,解决方案将是这样的:
var a = $http.get("NAMES");
var b = $http.get("GLAMORS");
// Using the promise library, you can have it wait for completion of multiple requests
$q.all([a, b]).then(function(results) {
var names = results[0].data;
var glamors = results[1].data;
var output = [];
for (var i = 0; i < names.length; i++){
for(var j = 0; j < glamors.length; j++) {
output.push({ name: names[i], glamor: glamors[j] });
}
}
$scope.data = output;
});