在一个表的冲突中重复两次

时间:2014-09-25 11:34:13

标签: angularjs

我有下表需要两个不同列的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>

使用多重复重复的最佳方法是什么?

3 个答案:

答案 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;
});

小提琴:http://jsfiddle.net/xb779fjg/