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>

私はgrid2つの列を持っています。

最初の行は静的で、残りは を使用してレンダリングされますtemplate。結果のグリッドは静的な行をレンダリングしません...テンプレート化された行をうまくレンダリングします.なぜZkは静的な行をレンダリングしないのですか?

4

1 に答える 1

1

私は以前にこのような問題に遭遇しました。問題の核心は、ZK が a の内容を設定する 2 つの方法を提供していることです。これは、などgridに適用されます。listboxtree

row1 つの方法は、ここで行うように ZUL でコンポーネントを手動で追加するgridか、Java のようなものでコンポーネントを追加することですmyGrid.getRows().getChildren().add(myRow);

の内容を設定するもう 1 つの方法は、gridZK のモデル コンセプトを使用することです。

残念ながら、お気づきのように、これら 2 つの概念は相互に排他的であり、組み合わせることはできません。モデルがどのように機能するかを考えると、それは理にかなっています。モデルに新しいオブジェクトを追加するとrowgrid. 同様に、モデルからオブジェクトを削除すると、対応するオブジェクトが からrow消えgridます。したがって、gridはモデル内のすべてのオブジェクトのライブ ビューをレンダリングするために機能しています。ZUL でハード コードした行は、モデル内のオブジェクトによって表されないため、レンダリングされません。

2 つの良い解決策があると思います。1 つ目は、2 つの概念を結合することです。なぜ、この 1 つの静的行が必要なのですか? モデル内のオブジェクトとして表現できませんか? そうでない場合、2 番目の解決策は、現在行っていることを再考することです。この行はグリッドに属していないと思われます。グリッドの外に移動すると、UI と UX のエクスペリエンスが向上します。フィードバックが必要な特定の UI シナリオがある場合は、ux.stackexchange.comサイトにアクセスしてください。

于 2013-11-18T12:30:25.653 に答える