2014-01-28 23 views
1

我搜索了很多,但無法找到。ng-repeat不會爲最後一項添加一些html元素

這裏是我的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> 

對於我添加使用ng-class="{active: $last}"class="active",但是對於這種不<a>標籤,如何添加?

回答

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/

+0

很酷。有效。 Thankz – iCode

3

您可以隨時在<a>上使用ng-show="!$last"。這意味着它不會顯示最後一個元素。

或者,您可以創建一個指令,僅基於某個值(!$ last)編譯內容。如果你不想將實際的標籤添加到dom中,而不是隱藏它,這是一種可行的方法。

希望這有助於!

+0

謝謝。但它也隱藏了文字。我只想刪除鏈接。我加了 ' {{tmp.text}}'這是唯一的方法嗎? – iCode

+0

你也許可以通過一個css類來禁用它。 ng-class =「{disabled:$ last}」。看看這個:http://stackoverflow.com/questions/2091168/disable-a-link-using-css – hassassin

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> 
相關問題