#scala #lift
#scala #поднимать
Вопрос:
Как вы просматриваете объект и отображаете результаты, не имея разметки в вашем коде scala?
У меня есть следующий код:
class User(id: Long, name: String)
class DisplayIt {
def display = {
val users = List(new User(0,"John"), new User(1, "James"))
"#name *" #> users.map(_.name) amp;
"#id *" #> users.map(_.id.toString)
}
}
//In the html:
<div class="lift:DisplayIt.display">
<div class="one-user">
User <span id="name"> has the id <span id="id">
</div>
</div>
Что происходит сейчас, так это то, что я заканчиваю словами «Пользователь John James имеет идентификатор 0 1″, все в одном div class =»one-user».
Как мне зациклить его, чтобы у меня был один div class =»one-user» для каждого пользователя?
Я знаю, что могу написать html / xml в коде scala и сделать это таким образом, но есть ли простой способ сделать это без какого-либо xml в коде scala?
Комментарии:
1. Комментарий не по теме, если вы измените свой класс User, запустите класс case, вы можете избежать появления нового в вашем списке
Ответ №1:
Попробуйте
def display = {
val users = List(new User(0, "John"), new User(1, "James"))
".one-user *" #> users.map { u =>
"#name *" #> u.name amp;
"#id *" #> u.id.toString
}
}
В принципе, сначала вы должны сопоставить окружающий элемент и применить к нему список преобразований.
Комментарии:
1. Я попробовал это, теперь, кажется, я получаю повторение одного пользователя (что я и хотел), но в каждом из них повторяются сведения обо всех пользователях. Итак, у меня есть два «Пользователя John James с идентификатором 0 1». Нужно ли мне делать что-то другое с моим html?
2. Обновление: Неважно, это работает отлично. Проблема заключалась в том, что я обернул свой исходный код users.map и не изменил его на u.name У меня все еще были users.map(_.name)
Ответ №2:
Попробуйте
def list = { ".one-user *" #> users.map( n => {
"#name *" #> n.name) amp;
"#id *" #> n.id.toString)
}
) }
Комментарии:
1. Ах, не видел ответа Дебильски, когда я печатал свой