Инструкция Velocity для добавления класса в последний пункт меню?

У меня есть этот код скорости для простого меню:

<div id="header">
 #foreach( $navItem in $navItems )
 <a href="$navItem.URL">$navItem.Title</a> |
 #end
</div>

Я хотел бы дать последнему ссылку меню класс "последний". Что будет для этого условным?

2 ответа

Обнаружение последнего элемента - это самое плохое место в Velocity по какой-то причине, я создал 3 сообщения об ошибках об этом, и даже несмотря на то, что он говорит, что они решены - он все еще не работает отлично, насколько мне известно.

Если вы используете Velocity 1.6 и ниже, то возможны следующие варианты:

1) Использование инструмента контура

#foreach( $navItem in $loop.watch($navItems) )
 #if($loop.last) 
 last 
 #end
#end

Но это не работает (см. ошибку # 1)

2) Использование внутреннего счетчика $velocityCount:

#foreach( $navItem in $navItems)
 #if($velocityCount == $navItems.size()) 
 last 
 #end
#end

Это работает.

В Velocity 1.7:

1) Вы должны просто использовать $foreach.last:

#foreach( $navItem in $navItems)
 #if($foreach.last) 
 last 
 #end
#end

Но это не работает снова (см. ошибка № 2 и ошибка № 3)

2) Сравнение текущего счетчика с размером списка:

#foreach( $navItem in $navItems)
 #if($foreach.count == $navItems.size()) 
 last 
 #end
#end

Это работает.

Да, такая простая задача и так много проблем.


#for ($page in $pages)
 .....
 #if ($velocityHasNext), #end
#end

работает очень хорошо.

licensed under cc by-sa 3.0 with attribution.