如果@load等于条件,则为zk元素

时间:2015-11-17 13:12:13

标签: zk zul

我有一个我在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 不会改变任何内容。如果我删除如果条件,则显示元素。但我只想在符合条件时才显示它。

请帮帮我

2 个答案:

答案 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;