Автозакрытие незакрытых тегов в шаблоне
Привет я пытаюсь создать такой шаблон
<script type='text/mustache' id='user-template'>
<ul>
{{#each users}}
<li>{{name}}</li>
{{#startHidden @index 2}}</ul><ul style = "display:none;">{{/startHidden}}
{{#endHidden @index 2}}</ul><a href="#">show all</a>{{/endHidden}}
{{/each}}
</ul>
</script>
Так что идея заключается в том, чтобы закрыть верхнюю <ul>
после того, как второй пользователь в списке откроет новый скрытый <ul>
и поместите всех остальных пользователей здесь. Но вместо этого я закрылся <ul>
и окончательный HTML выглядит так:
<ul>
<li>name1</li>
<li>name2</li>
<ul style="display:none;"></ul>
<li>name3</li>
<li>name4</li>
<a href="#">show all</a>
</ul>
Это мой JS
var data = [{name: "name1"},{name: "name2"},{name: "name3"},{name: "name4"}];
var users = new can.List(data);
var frag = can.view("user-template",{users:users},{
'startHidden' : function(currentIndex, usersToShow, options){
if (currentIndex() === usersToShow-1) {
return options.fn(this);
}
},
'endHidden' : function(currentIndex, usersToShow, options){
var length = options.scope.attr('users').length;
if ((length>usersToShow)&&(currentIndex() === length-1)) {
return options.fn(this);
}
}
});
Есть ли способ предотвратить автоматическое закрытие тегов, или я просто делаю это неправильно?
1 ответ
Решение
Это невозможно. can.view.live.html может только удалять или добавлять элементы в последовательности. Обходным решением будет просто добавить "скрытый" класс в LI, если он не должен быть видимым.