Оператор скорости, чтобы добавить класс в последний пункт меню? - PullRequest
4 голосов
/ 23 августа 2010

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

<div id="header" class="navstrip">

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

</div>

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

Ответы [ 2 ]

9 голосов
/ 23 августа 2010

По какой-то причине обнаружение последнего предмета является самой ошибочной точкой в ​​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

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

In Скорость 1,7 :

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

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

Но это не сработает снова (см. bug # 2 и bug # 3 )

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

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

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

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

2 голосов
/ 27 мая 2011
#for ($page in $pages)
 .....
  #if ($velocityHasNext), #end
#end

работает довольно хорошо.

...