我之前用 VBox 实现了聚合。这将获得所有“问题”并为每个问题创建一个文本框......
<VBox items="{path: 'view>questions', templateShareable: true}">
<items>
<VBox class="sapUiTinyMargin" templateShareable="true">
<Text text="Question {view>OrderSequence}"/>
</VBox>
</items>
</VBox>
Run Code Online (Sandbox Code Playgroud)
我需要做同样的事情,但对于 formElements。这能做到吗?
<f:formElements>
<f:FormElement label="{i18n>radioLabel}">
<f:fields>
<Input value="{viewmodel>radioLabel}" id="__redioLabel"/>
</f:fields>
</f:FormElement>
</f:formElements>
Run Code Online (Sandbox Code Playgroud)
它似乎不适用于“项目”
在 UI5 中元素有几个特点:
在您的情况下,“formElements”是FormContainer元素的聚合。基于文档:
聚合绑定可用于根据模型数据自动创建子控件。这可以通过克隆模板控件或使用工厂函数来完成。聚合只能绑定到模型中定义的列表,即绑定到 JSON 模型中的数组或 OData 模型中的集合。
这意味着可以使用任何聚合,无论它如何命名。现在,回到你的例子,“items”不起作用的原因是因为 FormContainer 父元素没有具有该名称的聚合。相反,您必须使用“formElements”聚合。
<f:FormContainer formElements="{viewmodel>/my/path/to/list}">
<f:formElements>
<f:FormElement label="{i18n>radioLabel}">
<f:fields>
<Input value="{viewmodel>radioLabel}"/>
</f:fields>
</f:FormElement>
</f:formElements>
</f:FormContainer>
Run Code Online (Sandbox Code Playgroud)
另外,请注意,通常您不需要为模板或其任何子项提供 ID(示例中的 Input 具有 ID),这是因为该元素特别不会成为生成的控件树的一部分。它只是用于克隆以根据模型列表创建“真实”元素。
最后,您在第一个示例中的 VBox 上有一个“templateShareable”属性。VBox 没有这样的属性,所以它什么都不做(你实际上在父 VBox 的“项目”的绑定规范中正确使用它)。
| 归档时间: |
|
| 查看次数: |
1835 次 |
| 最近记录: |