我有一个我在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 元素。如何获取它?
<a action="" label="should be displayed when some param is equals to 3 " if="{each.someParam=='3'}"/>
我查了一下 How to use if="some condition" in ZK template tag
但它对我没有帮助。
我也试过
<a action="" label="should be displayed when some param is equals to 3 " if="{@(each.someParam)=='3'}"/>
也没用。 '3'或 3 不会改变任何内容。如果我删除如果条件,则显示元素。但我只想在符合条件时才显示它。
请帮帮我
答案 0 :(得分:4)
很高兴您解决了问题。
我会做出这个答案,这样你就可以更加理解它为什么不起作用。
首先,if
属性无法处理动态数据
因此,只有使用$ {...}(静态)的变量才能起作用
使用ZK 8,有一个新标签<if test="">
,它可以处理动态数据。
您需要在<zk>
代码中设置if,但问题在于@
或缺少$
。
/>
可以这么说,@{...}
已弃用数据绑定
它是MVVM模式的演变但是它是如此的治疗,他们弃用它并且还删除了大部分关于此的文档,女巫是一个很好的案例,所以没有人可以学习使用它。
也许建议什么可以帮助你:
<style>
.makeYourName {
word-wrap: break-word;
text-align: left;
}
</style>
然后创建列表单元格,如:
<listcell sclass="makeYourName">
当你需要重构样式时,可以节省你的时间。
答案 1 :(得分:0)
我在类似的项目中找到了解决方案。
<zk if="${(each.l3== 3)}">
<a action="" label="should be displayed when some param is equals to 3"/>
</zk>
这对我有用。
注意 if =&#34; $ {each.l3 == 3}&#34;