doT.js делает что-то каждую третью итерацию
У меня есть шаблон doT.js, который выглядит так:
{{?it.books.length }}
{{~it.books :value}}
<li>
<article class='Teaser'>
<a href='{{=value.url}}' title='{{=value.title}}'>
<img src='{{=value.image}}' />
</a>
<h3>
<a href='{{=value.url}}' title='{{=value.title}}'>{{=value.title}}</a>
</h3>
</article>
</li>
// this should only be rendered every 3rd time
<br class='clear' />
{{~}}
{{?}}
Br-Tag в конце должен отображаться только каждый третий раз. Как мне это сделать?
2 ответа
Решение
Попробуй это:
{{?it.books.length }}
{{~it.books :value:index}}
<li>
<article class='Teaser'>
<a href='{{=value.url}}' title='{{=value.title}}'>
<img src='{{=value.image}}' />
</a>
<h3>
<a href='{{=value.url}}'
title='{{=value.title}}'>{{=value.title}}</a>
</h3>
</article>
</li>
{{? index % 3 == 2 }}
<br class='clear' />
{{?}}
{{~}}
{{?}}
Если вы хотите избежать добавления элемента в конец списка (что происходит, когда длина коллекции делится на 3), замените
{{? index%3 == 2 }}
с
{{? it.books.length-1 != index && index % 3 == 2 }}
Взглянуть на случай несколько более сложный
{
"result": [
["Administrators", 1, [{
"id": 189,
"role_id": 1,
"user": {
"id": 8,
"username": "agnaldocarmo@gmail.com",
"email": "agnaldocarmo@gmail.com",
"firstName": "Agnaldo",
"lastName": "Carmo",
"created": {
"date": "2015-09-25
18: 56: 25.000000 ","
timezone_type ":3,"
timezone ":"
America\ / Sao_Paulo "},"
modified ":{"
date ":"
2015 - 09 - 25 18: 56: 25.000000 ","
timezone_type ":3,"
timezone ":"
America\ / Sao_Paulo "},"
relativePath ":"
ws\ / uploads\ / User\ / 8\ / 0278845942. jpg ","
absolutePath ":"
ws\ / uploads\ / User\ / 8\ / 0278845942. jpg ","
role ":[1],"
language_id ":3
}
}]],
["Writers", 2, [{
"id": 135,
"role_id": 2,
"user": {
"id": 7,
"username": "camilaguimaraes",
"email": "camilag
@gmail.com ","
firstName ":"
Camila ","
lastName ":"
Guimaraes ","
created ":{"
date ":" - 0001 - 11 - 30 00: 00: 00.000000 ",
"timezone_type": 3,
"timezone": "America\/Sao_Paulo"
},
"modified": {
"date": "-0001-11-30 00:00:00.000000",
"timezone_type": 3,
"timezone": "America\/Sao_Paulo"
},
"relativePath": null,
"absolutePath": null,
"role": [2],
"language_id": 1
}
}, {
"id": 183,
"role_id": 2,
"user": {
"id": 20,
"username": "agnaldo12@hotmail.com",
"email": "agnaldo12@hotmail.com",
"firstName": "Agnaldo",
"lastName": "Carmo",
"created": {
"date": "2015-11-23 10:41: 34.000000 ","
timezone_type ":3,"
timezone ":"
America\ / Sao_Paulo "},"
modified ":{"
date ":"
2015 - 11 - 23 10: 41: 34
.000000 ","
timezone_type ":3,"
timezone ":"
America\ / Sao_Paulo "},"
relativePath ":null,"
absolutePath ":null,"
role ": [2, 3, 4],
"language_id": 1
}
},
{
"id": 186,
"role_id": 2,
"user": {
"id": 2,
"username": "zarkok@gmail.com",
"email": "zarkok@gmail.com",
"firstName": "zarko",
"lastName": "krneta",
"created": {
"date": "-0001-11-30 00:00:00.000000",
"timezone_type": 3,
"timezone": "America\/Sao_Paulo"
},
"modified": {
"date": "2015-06-10 15:51:30.000000",
"timezone_type": 3,
"timezone": "America\/Sao_Paulo"
},
"relativePath": "ws\/uploads\/User\/2\/1327788642.jpg",
"absolutePath": "ws\/uploads\/User\/2\/1327788642.jpg",
"role": [2],
"language_id": 1
}
}]],
["Editors", 3, [{
"id": 184,
"role_id": 3,
"user": {
"id": 20,
"username": "agnaldo12@hotmail.com",
"email": "agnaldo12@hotmail.com",
"firstName": "Agnaldo",
"lastName": "Carmo",
"created": {
"date": "2015-11-23 10:41:34.000000",
"timezone_type": 3,
"timezone": "America\ / Sao_Paulo "},"
modified ":{"
date ":"
2015 - 11 - 23 10: 41: 34.000000 ","
timezone_type ":3,"
timezone ":"
America\ / Sao_Paulo "},"
relativePath ":null,"
absolutePath ":null,"
role ":[2,3,4],"
language_id ":1}}]],["
Auditors ",4,
[{
"id": 185,
"role_id": 4,
"user": {
"id": 20,
"username": "agnaldo12@hotmail.com",
"email": "agnaldo12@hotmail
.com ","
firstName ":"
Agnaldo ","
lastName ":"
Carmo ","
created ":{"
date ":"
2015 - 11 - 23 10: 41: 34.000000 ","
timezone_type ": 3,
"timezone": "America\/Sao_Paulo"
},
"modified": {
"date": "2015-11-23 10:41:34.000000",
"timezone_type": 3,
"timezone": "America\/Sao_Paulo"
},
"relativePath": null,
"absolutePath": null,
"role": [2, 3, 4],
"language_id": 1
}
}]],
["teste", 6, null],
["teste1", 7, null],
["teste2", 8, null]]
}
{{ for(var prop in it.userCollection) { }}
<!-- Prints {{=prop}} "msg" -->
</br>
<div> {{=it.userCollection[prop]['attributes'][0]}}</div>
</br>
{{ for(var numProp in it.userCollection[prop]['attributes'][2]) { }}
{{
var VRoleId = it.userCollection[prop]['attributes'][2][numProp]['role_id'];
var user = it.userCollection[prop]['attributes'][2][numProp]['user'];
}}
<!-- Prints "a: a1" and "b: b1" -->
<div>Role id {{=VRoleId }}</div>
<div>User Name{{=user['username'] }}</div>
{{ } }}
{{ } }}
его результат
Администраторы
Идентификатор роли 1 Имя пользователя agnaldocarmo@gmail.com
писатели
Идентификатор роли 2 Имя пользователя camilaguimaraes Идентификатор роли 2 Имя пользователя agnaldo12@hotmail.com Идентификатор роли 2 Имя пользователя zarkok@gmail.com
редакторы
Идентификатор роли 3 Имя пользователя agnaldo12@hotmail.com
Аудиторы
ID роли 4 Имя пользователя agnaldo12@hotmail.com
удостоверительная часть судебного приказа
teste1
teste2