lift中有没有将参数传递给代码段的方法?
我正试图为我的页面编写一个pluraize过滤器,根据有多少个单词来显示"用户"或"用户":
1 user
2 users
它在Django中的工作方式被称为过滤器,它们写如下:
You have {{ num_messages }} message{{ num_messages|pluralize }}.
因此,在这里您可以看到复数函数接受一个整数num_messages并输出一个适当的字符串-空"或"s"。
EDIT:请注意,本例中的num_messages是一个实际的上下文变量,从视图传递到模板。
您可以将参数传递给代码段,是的。
class MySnippet {
def foo: NodeSeq = {
x = S.attr("myparam") openOr "myparam: Y U NO DEFINED!?"
<p>I got {x}!</p>
}
}
用途:
<lift:MySnippet.foo myparam="3"/>
或者,更新的Lift 2.3+风格:
<div class="lift:MySnippet.foo?myparam=3"/>
<div id="main" class="cl1 cl2 lift:surround?with=default;at=content">
这也是一个带有参数的代码段调用。
参见lift文档:lift文档,3.4.1标记中的代码段
为了指示内容是动态的,标记包含一个代码段调用。它通常采用class="someclass someothercss lift:mysnippet"的形式。如果类属性包含lift:xxx,则xxx将被解析为一个代码段。该片段可能具有属性。属性的编码方式类似URL参数。。。偏移a?(问号),然后name=value,分隔为?(问号);(分号)或&(安培数)。名称和值是URL编码的。
你不能这样做吗。
<div class="lift:MyClass">
You have <span class="num_messages"/>.
</div>
你的电梯代码看起来像:
class MyClass {
def render = "num_messages" #> (num_messages + pluralize("message", num_messages))
}