我的电梯视图有问题.问题是,我正在进行两次昂贵的远程rest-api调用 - 我真的只需要做一次.
但我无法弄清楚如何解决这个问题.
基本上我有这样的HTML模板,需要显示用户列表及其计数:
//UserSearchResults.html
Num users: <span class="lift:UserSearchResults.userCount"></span>
User list:
<ul>
<lift:UserSearchResults.userList>
<li><user:userName/></li>
</lift:UserSearchResults.userList>
</ul>
Run Code Online (Sandbox Code Playgroud)
然后我有一个实际的片段,从rest-api服务器检索用户列表.但是,请注意它实际上是这两次 - 一次计算用户数,一次计算列表.
//UserSearchResults.scala
/** Get list of users from api */
def users: List[User] = {
val url = "http://server/rest-api/user-search";
val result = io.Source.fromURL(url).mkString
//... parse users into List[User] and return it
return entries
}
/** Render user count */
def userCount =
"* *" #> users.length //<-- ONE call
def userList(in: NodeSeq): NodeSeq = {
users.flatMap(user => Helpers.bind("user", in, //<--SECOND call
"userName" -> user.user_name))
}
Run Code Online (Sandbox Code Playgroud)
api电话有没有更好的地方?有没有像片段的"构造函数",我可以使用缓存用户列表,并在类中的所有函数之间共享它?
任何帮助表示赞赏.
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |