我在zul文件中构建了一个列表。
<listbox id="someId" model="@load(vm.searchResults)" selectedItem="@bind(vm.selectedItem)" vflex="1" multiple="true">
<listhead>
<listheader label="${labels.l1}" width="150px" align="center"/>
<listheader label="${labels.l2}" width="150px" align="center"/>
<listheader label="${labels.l3}" width="100px" align="center"/>
<listheader label="${labels.l4}" width="400px" align="center"/>
</listhead>
<template name="model">
<listitem style="text-align: left;">
<listcell style="word-wrap: break-word; text-align: left;">
<label value="@load(each.l1)"/>
</listcell>
<listcell style="word-wrap: break-word; text-align: left;">
<label value="@load(each.l2)"/>
</listcell>
<listcell style="word-wrap: break-word; text-align: left;">
<label value="@load(each.l3)"/>
<a action="" label="should be displayed when some param is equals to 3 " if="{each.someParam=='3'}"/>
</listcell>
<listcell style="text-align: left;">
<label value="@load(each.l4)"/>
</listcell>
</listitem>
</template>
</listbox>
当每个参数为3时,我需要显示一个元素。我该怎么得到它?
<a action="" label="should be displayed when some param is equals to 3 " if="{each.someParam=='3'}"/>
我检查过了如何使用if=";某些条件";在ZK模板标签中
但这对我没有帮助。
我也试过
<a action="" label="should be displayed when some param is equals to 3 " if="{@(each.someParam)=='3'}"/>
也没用'3'或3不会改变任何内容。如果我删除如果条件,则会显示元素。但我只想在满足if条件时显示它。
请帮助我
很高兴您解决了问题
我会给出这个答案,这样你就可以更好地理解为什么它不起作用
首先,if
属性不能处理动态数据
因此,只有使用${…}(static)进行剥离才能工作
有了ZK8,就有了一个新标签<if test="">
,它可以处理动态数据
这不是需要在<zk>
标记中设置if的问题,而是示例中的问题是@
或缺少$
可以说,@{...}
是不推荐使用的数据绑定
这是MVVM模式的演变,但太糟糕了,他们不赞成使用它,还删除了有关它的大部分文档,这是一个很好的例子,所以没有新的人可以学会使用它。
也许有一个可以帮助你的建议:
<style>
.makeYourName {
word-wrap: break-word;
text-align: left;
}
</style>
然后创建你的列表单元格,如:
<listcell sclass="makeYourName">
可以在需要重构样式时为您节省时间。
我在类似的项目中找到了解决方案。
<zk if="${(each.l3== 3)}">
<a action="" label="should be displayed when some param is equals to 3"/>
</zk>
这对我有用。
注意if="${each.l3==3}"