Кажется, вы хотите, чтобы Velocity мгновенно реагировала на чей-то клик, верно?
Это не сработает (то есть без дополнительных усилий), потому что шаблон Velocity обрабатывается на стороне сервера. Ваш код Velocity никогда не «заметит» щелчок, как это делается на стороне клиента. По крайней мере, не в том же запросе, но я приду к этому позже.
Кроме того, Velocity не может напрямую получить доступ к значению флажка, а это означает, что не существует такой вещи, как limited.isChecked()
.
Итак, первое, что вам нужно, это вспомогательный объект (форма), где вы оцениваете и сохраняете статус своего флажка. Не должно быть проблем, так как вам удалось предоставить объект $customerList
. Статус флажка должен быть представлен логической переменной, скажем, limitedView
, чтобы вы могли написать:
#foreach( $customer in $customerList )
#if($velocityCount > 5 && $yourBackingObject.isLimitedView())
#break
...
(См. раздел Выход из цикла foreach в Velocity, если у вас возникли проблемы с инструкцией #break
.)
Если вам действительно нужно немедленно отобразить сокращенный список, обновите (часть) страницы с помощью JavaScript/Ajax. Этот новый запрос — это то, что вам нужно, чтобы обновить ваш резервный объект и снова отобразить шаблон.
Редактировать:
Или даже проще (но немного за пределами Veloctiy и в зависимости от JavaScript) предоставить оба списка в двух разных контейнерах на странице, например <div>
, и переключать класс css щелчком по флажку, чтобы один из двое всегда невидимы.
.vm:
<div id="listLength">
#foreach( $customer in $customerList )
#if($velocityCount > 5)
#break
...
</div>
<div id="listLengthToggler">
#foreach( $customer in $customerList )
...
</div>
.css
div#listLengthToggler,
div#listLength {
... /* general styles for classes */
display: none;
}
div#listLengthToggler {
display: block;
}
.js
$(document).ready(
function() {
$('div#listLengthToggler').click(
function() {
$('div#listLength').slideToggle('slow');
}
);
}
);
Получите http://code.jquery.com/jquery-2.1.4.min.js
Вы добавляете строку с надписью «Нажмите, чтобы развернуть!» и «Нажмите, чтобы свернуть!» соответственно внутри каждого элемента div и избавьтесь от флажка или адаптируйте JavaScript, чтобы переключение начиналось при щелчке по нему.
person
MyBrainHurts
schedule
25.01.2016