我之前使用VBox实现了聚合。这得到了所有的问题'并为每个....创建一个文本框。
<VBox items="{path: 'view>questions', templateShareable: true}">
<items>
<VBox class="sapUiTinyMargin" templateShareable="true">
<Text text="Question {view>OrderSequence}"/>
</VBox>
</items>
</VBox>
我需要做同样的事情,但是对于formElements。可以这样做吗?
<f:formElements>
<f:FormElement label="{i18n>radioLabel}">
<f:fields>
<Input value="{viewmodel>radioLabel}" id="__redioLabel"/>
</f:fields>
</f:FormElement>
</f:formElements>
似乎没有使用&#39;项目&#39;
答案 0 :(得分:4)
在UI5中,元素有几个特征:
您可以在official documentation here中找到这些与数据绑定概念的关系。
在您的情况下,“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>
另外,请注意,通常,您不需要为模板或其任何子项(示例中的输入具有ID)提供ID,这是因为该元素特别不会是结果控件的一部分树。它只是用于克隆以基于模型列表创建“真实”元素。
最后,在第一个示例中,您在VBox上有一个“templateShareable”属性。 VBox没有这样的属性,所以它什么也没做(你实际上在父VBox的“items”的绑定规范中正确使用它。)
答案 1 :(得分:0)
解决方案是......
表格上的汇总......
<f:Form id="formCustomRadio" editable="true" visible="true" formContainers="{viewmodel>answers}">
非常感谢
答案 2 :(得分:-2)
您可以使用VBox然后将f:formElements放在项目中。 或者使用标准清单。
FormElements或容器没有聚合项目。