0
<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 不渲染静态行?

4

1 回答 1

1

我以前遇到过这样的问题。问题的核心在于 ZK 提供了两种方法来设置 a 的内容grid,这适用于listbox,tree等。

一种方法是手动将row组件添加到gridZUL 中,就像您在此处所做的那样,或者在 Java 中使用myGrid.getRows().getChildren().add(myRow);.

另一种设置内容的方法grid是使用ZK的模型概念。

不幸的是,正如您所发现的,这两个概念是相互排斥的——它们不能结合在一起。当您考虑模型的工作原理时,这是有道理的。如果您要向模型添加一个新对象,它将rowgrid. 同样,如果您要从模型中删除一个对象,它对应的对象row将从grid. 因此,它grid的功能是渲染模型中所有对象的实时视图。您在 ZUL 中硬编码的行不会由模型中的对象表示,因此不会被渲染。

我为您看到了两个很好的解决方案,第一个是合并两个概念:为什么需要这个静态行?不能在模型中表示为对象吗?如果没有,第二个解决方案是重新考虑你在做什么。我怀疑这一行不属于网格,您将获得更好的 UI 和 UX 体验以将其移出网格。如果您有一个特定的 UI 场景需要反馈,那么ux.stackexchange.com站点就是您的去处。

于 2013-11-18T12:30:25.653 回答