У меня есть следующий нефритовый код: –
<jade>
each item in reports
ul
div.lstheader #{item.user}
each val in item.status
li #{val}
<jade>
Отчет – не что иное, как объект Json, например, следующий
status: [ 'test', 'test message','http://stackoverflow.com/questions/ask' ] }
Я хочу показать, если item.status как ссылка на клики, если это ссылка. Но как я могу это сделать?
Ну вы можете использовать ванильный JS в Джейд, только предваряя ваш код с -
.
Таким образом, вы можете сделать что-то вроде:
- if (val.hasIndexOf("http")) // This is NOT a very robust test, maybe try with RegExp
li: a(href=val)= val
- else
li= val
Но, на мой взгляд, вы должны отказаться от какой-либо логики от Джейд. В идеальном мире я думаю, что Джейд должен быть ограничен отображаемыми целями.
Вы могли бы сделать что-то вроде:
// In Node.js
var elements = [
{
"label" : "test"
},
{
"label" : "test message"
},
{
"label" : "Go To SO",
"href" : "http://stackoverflow.com/questions/ask"
}
];
// In Jade
each val in item.status
if (val.href)
li: a(href=val.href)= val.label
else
li= val.label
Теперь это явно не идеально, поскольку вы все еще выполняете тесты в Jade, но по крайней мере это не теневой тест, который может не получиться в зависимости от того, какие ссылки вы хотите отобразить, а элементы, которые вы хотите отобразить, имеют одну и ту же структуру, Но опять же, это не идеально. Возможно, вы могли бы найти лучшее решение.