Как отображать интерактивные ссылки с использованием нефрита?

Вопрос:

У меня есть следующий нефритовый код: –

<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, но по крайней мере это не теневой тест, который может не получиться в зависимости от того, какие ссылки вы хотите отобразить, а элементы, которые вы хотите отобразить, имеют одну и ту же структуру, Но опять же, это не идеально. Возможно, вы могли бы найти лучшее решение.

Оцените статью
TechArks.Ru
Добавить комментарий