ng-repeat不为最后一项添加一些html元素

时间:2014-01-28 07:30:10

标签: angularjs angularjs-ng-repeat

我搜索了很多但找不到。

这是我的HTML

<li ng-repeat="tmp in list" ng-class="{active: $last}">
    <a href="#{{tmp.url}}">{{tmp.text}}</a>
</li>

工作正常。但我想要的是ng-repeat中的最后一项,我不想添加 <a> 标记。我想用以下方式

<li ng-repeat="tmp in list" class="active">
    {{tmp.text}}
</li>

对于我使用class="active"添加的ng-class="{active: $last}",但对于没有<a>标记的情况,如何添加?

3 个答案:

答案 0 :(得分:5)

您可以按照以下方式执行此操作:

<li ng-repeat="tmp in list" ng-class="{active: $last}" ng-switch="$last">
    <span ng-switch-when="true">{{tmp.text}}</span>
    <a href="#{{tmp.url}}" ng-switch-default>{{tmp.text}}</a>
</li>

以下是工作小提琴的链接:http://jsfiddle.net/zFH4Y/

答案 1 :(得分:4)

您始终可以在ng-show="!$last"上使用<a>。这意味着它不会为最后一个元素显示它。

或者,您可以创建一个仅根据某个值(!$ last)编译内容的指令。如果您不想将实际标记添加到dom中,而不是仅仅隐藏它,那么这种方法将起作用。

希望这有帮助!

答案 2 :(得分:0)

不如其他解决方案那么优雅,但您可以迭代直到数组的第2个到最后一个元素,然后手动执行不带a标记的最后一个元素

<li ng-repeat="tmp in list.slice(0,list.length-1)">
    <a href="#{{tmp.url}}">{{tmp.text}}</a>
</li>
<li class="active">
    {{list[list.length-1].text}}
</li>