<grid vflex="1" model="@bind(vm.getModel())">
<columns menupopup="auto">
<column label="Name" sort="auto(name)" />
<column label="Type" sort="auto(type)" />
</columns>
<rows>
<row>
<button label="Left" /> // This do not render
<label value="Right" /> // This do not render
</row>
<template name="model">
<row>
<label value="@bind(each.name)" />
<label value="@bind(each.type)" />
</row>
</template>
</rows>
</grid>
我有两列grid
。
第一行是静态的,其余的使用 template
渲染。生成的网格不会呈现静态行...它使模板化行精细。为什么 Zk 不渲染静态行?
我以前遇到过这样的问题。问题的核心在于ZK提供了两种方法来设置grid
的内容,这适用于listbox
、tree
等。
一种方法是在 ZUL 中手动将row
组件添加到您的grid
中,就像您在这里所做的那样,或者在 Java 中使用类似 myGrid.getRows().getChildren().add(myRow);
的内容。
设置grid
内容的另一种方法是使用 ZK 的模型概念。
不幸的是,正如你所发现的,这两个概念是相互排斥的——它们不能结合起来。当您考虑模型的工作原理时,这是有意义的。如果要向模型添加新对象,它将在grid
中显示为新row
。同样,如果您要从模型中删除对象,则相应的row
将从grid
中消失。因此,grid
可以渲染模型中所有对象的实时视图。在 ZUL 中硬编码的行不由模型中的对象表示,因此不会呈现。
我为您看到了两个很好的解决方案,第一个是合并这两个概念:为什么需要这个静态行?它不能在模型中表示为对象吗?如果没有,第二个解决方案是重新考虑你正在做的事情。我怀疑这一行不属于网格,你会得到更好的 UI 和 UX 体验,将其移动到网格之外。如果你有想要反馈的特定 UI 方案,ux.stackexchange.com 网站就是你要去的地方。