我需要按行显示模型中的对象,每行有两个模型。在我的zul文件中,我必须将模型分成两组。如何使用foreach、foreachstatus或template ?我使用zk网格
下面是索引上两个模板之间的切换示例。
你只需要实现对2取模并检查是否为1或0。
该链接的zul代码:
<listbox model="@load(vm.beans)">
<listhead children="@load(vm.colTitle)">
<template name="children" var="title">
<listheader label="@load(title)" />
</template>
</listhead>
<template name="model" var="bean">
<listitem children="@load(vm.colTitle) @template(forEachStatus.index lt 1 ? 'fixed' : 'variable')">
<template name="fixed">
<listcell label="@load(bean.title)" />
</template>
<template name="variable">
<listcell>
<checkbox checked="@load(bean.states[forEachStatus.index - 1])"
label="@load(bean.states[forEachStatus.index - 1] ? 'true' : 'false')"
onCheck="@command('onCheckState', bean=bean, state=self.isChecked(), index=forEachStatus.index - 1)" />
</listcell>
</template>
</listitem>
</template>
</listbox>
是另一个模数的例子,但只有一个模板:
http://zkfiddle.org/sample/2pmngjk/9-Listbox-with-Template
<zk>
<window apply="pkg$.FruitProvider">
<listbox model="${$composer.fruits}">
<template name="model">
<listitem>
<listcell if="${forEachStatus.index % 2 == 0}">
<textbox value="${each[0]}" />
<textbox value="${each[1]}" />
</listcell>
<listcell unless="${forEachStatus.index % 2 == 0}">
<label value="${each[0]}" />
<label value="${each[1]}" />
</listcell>
</listitem>
</template>
</listbox>
</window>
</zk>
我敢说你只能将一个模型应用到你的网格中,当然你也可以在控制器端操作它然而,如果你想知道模板组件迭代的元素索引,使用@load(varName Status.index)例子:
<template name="model" var="element">
然后在模板内:
<label value="@load(elementStatus.index)" />
它会输出元素在模型中的位置
更多信息在这里