zk 元素如果@load 等于条件

zk element if @load equals condition

我有一个在 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 不会改变任何东西。如果我删除 if 条件,则会显示 a 元素。但是我只想满足if条件才显示。

请帮帮我

我在类似项目中找到了解决方案。

<zk if="${(each.l3== 3)}">
    <a action="" label="should be displayed when some param is equals to 3"/>
</zk>

这对我有用。

关注 if="${each.l3== 3}"

很高兴你解决了你的问题。
我会做出这个回答,以便您可以更多地理解它为什么不起作用。

首先,if属性不能处理动态数据。
所以只有使用 ${...} (静态)的减速才能工作。
在 ZK 8 中,有一个新标签 <if test="">,它可以处理动态数据。

这不是您需要在 <zk> 标记中设置 if 的问题,但您示例中的问题是 @ 或缺少 $.
这可能是说,@{...} is deprecated databinding.
这是 MVVM 模式的演变 但是 它太糟糕了以至于他们弃用了它并且还删除了大部分关于这个的文档, 是一个很好的案例所以没有人可以学习使用这个。

也许有什么可以帮助您的建议:

<style>
    .makeYourName {
        word-wrap: break-word; 
        text-align: left;
     }
</style>

然后像这样创建你的列表单元:

<listcell sclass="makeYourName">

可以在您需要重构样式时节省您的时间。