AngularJS ng-repeat over multiple tr

时间:2014-02-27 10:57:36

标签: javascript angularjs angularjs-ng-repeat

我正在尝试使用以下代码(数据来自API):

...
<tbody ng-repeat="verbinding in data.connection" style="border-bottom:2px solid black;">

    <tr>
        <td></td>
        <td></td>
        <td>{{verbinding.departure.time  * 1000 | date:'HH:mm'}}</td>
        <td>{{verbinding.departure.platform}}</td>
        <td><a href="/liveboard/{{verbinding.departure.stationinfo.id}}">{{verbinding.departure.station}}</td>
    </tr>

    <tr ng-if="verbinding.departure.vehicle == verbinding.arrival.vehicle">
        <td colspan = "5" style="text-align:center;">{{verbinding.departure.vehicle}}</td>
    </tr>
<span ng-if="verbinding.departure.vehicle != verbinding.arrival.vehicle" ng-repeat="via in verbinding.vias.via">
    <tr>
        <td>{{via.arrival.time * 1000 | date:'HH:mm'}}</td>
        <td>{{via.arrival.platform}}</td>
        <td>{{via.departure.time * 1000 | date:'HH:mm'}}</td>
        <td>{{via.departure.platform}}</td>
        <td><a href = "/liveboard/{{via.stationinfo.id}}">{{via.station}}</a></td>
    </tr>
    <tr>
        <td colspan = "5">{{via.vehicle.id}}</td>
    </tr>
</span>
...

上面的代码不起作用。我使用span的原因是因为我需要两个tr。以下工作正常:

...
<tr ng-if="verbinding.departure.vehicle != verbinding.arrival.vehicle" ng-repeat="via in verbinding.vias.via">
    <td>{{via.arrival.time * 1000 | date:'HH:mm'}}</td>
    <td>{{via.arrival.platform}}</td>
    <td>{{via.departure.time * 1000 | date:'HH:mm'}}</td>
    <td>{{via.departure.platform}}</td>
    <td><a href = "/liveboard/{{via.stationinfo.id}}">{{via.station}}</a></td>
</tr>
...

但是我只有一个tr,我需要两个。

1 个答案:

答案 0 :(得分:5)

我认为ng-repeat-startng-repeat-end可能就是你要找的东西。

来自docs

  

ng-repeat-start指令与ng-repeat的作用相同,但会重复所有HTML代码(包括它定义的标记),包括放置ng-repeat-end的结束HTML标记。

也许是这样的......

<tbody ng-repeat="verbinding in data.connection" style="border-bottom:2px solid black;">

    <tr>
        <td></td>
        <td></td>
        <td>{{verbinding.departure.time  * 1000 | date:'HH:mm'}}</td>
        <td>{{verbinding.departure.platform}}</td>
        <td><a href="/liveboard/{{verbinding.departure.stationinfo.id}}">{{verbinding.departure.station}}</td>
    </tr>

    <tr ng-if="verbinding.departure.vehicle == verbinding.arrival.vehicle">
        <td colspan = "5" style="text-align:center;">{{verbinding.departure.vehicle}}</td>
    </tr>
    <tr ng-repeat-start="via in verbinding.vias.via">
        <td>{{via.arrival.time * 1000 | date:'HH:mm'}}</td>
        <td>{{via.arrival.platform}}</td>
        <td>{{via.departure.time * 1000 | date:'HH:mm'}}</td>
        <td>{{via.departure.platform}}</td>
        <td><a href = "/liveboard/{{via.stationinfo.id}}">{{via.station}}</a></td>
    </tr>
    <tr ng-repeat-end>
        <td colspan = "5">{{via.vehicle.id}}</td>
    </tr>
</tbody>