在 zk 中使用带有 mvvm 模型的模板时,静态行未在网格中呈现


<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的内容,这适用于listboxtree等。

一种方法是在 ZUL 中手动将row组件添加到您的grid中,就像您在这里所做的那样,或者在 Java 中使用类似 myGrid.getRows().getChildren().add(myRow); 的内容。

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

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

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

相关内容

  • 没有找到相关文章

最新更新