2

我有一个在 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'}"/>

我检查了这个 如何在 ZK 模板标签中使用 if="some condition"

但这对我没有帮助。

我也试过

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

也没有工作。'3'3不会改变任何东西。如果我删除if条件,则会显示一个元素。但我只想在满足 if 条件时才显示它。

请帮我

4

2 回答 2

4

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

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

您需要在<zk>标签中设置 if 不是问题,但您示例中的问题是 the@或 missing $
可以说,@{...}不推荐使用数据绑定。
这是 MVVM 模式的演变,它太糟糕了,以至于他们弃用了它,并且还删除了大部分关于此的文档,女巫是一个很好的案例,所以没有人可以学习使用它。

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

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

然后创建您的列表单元,如:

<listcell sclass="makeYourName">

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

于 2015-11-18T06:29:25.383 回答
0

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

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

这对我行得通。

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

于 2015-11-17T14:12:19.960 回答