我有一个看起来像这样的模板:
<lift:surround name="default" at="page-content">
<lift:bind-at name="page-title">Home</lift:bind-at>
...
</lift:surround>
默认模板如下所示:
<html>
<head>
<title>Title Prefix | </title>
</head>
<body>
<h1><lift:bind name="page-title" /></h1>
<div id="page-content">
<lift:bind name="page-content" />
</div>
</body>
</html>
我想使用一个代码段将<title>
内容替换为一个字符串,该字符串结合了“标题前缀”和<lift:bind-at name="page-title">
的值(即:“Home”)。我希望在<h1>
<body>
内使用相同的值
如何从周围模板中使用的代码段中访问bind-at
值?
答案 0 :(得分:1)
我不相信你可以做你想要做的bind-at
指令,或者至少,我找不到办法。您应该能够使用片段来完成类似的事情。
例如,如果您使用SiteMap
,则以下内容大致相同。
class TitleSnippet {
//Store the value in a requestVar
private var titleVar:String = ""
def first = {
//Retrieve the title for the current Loc as defined in the Sitemap
val locTitle = for (request <- S.request;
loc <- request.location) yield loc.title
//Retrieve the text portion of the tag, and append it to the sitemap title.
//If no sitemap title exists, just display the text
"* *" #> { ns =>
val myTitle = locTitle.map{ t =>
"%s | %s".format(ns.text, t)
} openOr ns.text
titleVar = myTitle
Text(myTitle)
}
}
def title = {
"* *" #> titleVar
}
}
然后,在您的模板中,您所要做的只是说:
<title data-lift="TitleSnippet.first">Home</title>
所以,如果我们在站点地图中有这样的页面定义:
Menu("Sub Page 1") / "subpage"
如果一切正常,您应该会看到如下标题:<title>Home | Sub Page 1</title>
,如果您在页面的其他位置需要它,那么您只需要:<h1 data-lift="TitleSnippet.title"></h1>
。
如果您需要访问其他代码段,您还可以将titleVar
分解为随播对象并使用RequestVar
。