我在向SAPUI5中的SimpleForm添加片段时遇到问题。我有一个SimpleForm,并希望在片段中添加片段内容。结果应如下所示: what i want done
我的片段:
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:tnt="sap.tnt"
xmlns:custom="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1">
<core:Title text="{i18n>beauskunftung.suche.address}"/>
<Label text="{i18n>beauskunftung.suche.streetNo}"/>
<Input editable="false" fieldGroupIds="Address" value="{AddressStreet}" id="inputStreetID"></Input>
<Input editable="false" fieldGroupIds="Address" value="{AddressStreetNumber}" id="inputNumberID">
<layoutData>
<l:GridData span="L3 M3 S4"/>
</layoutData>
</Input>
<Label text="{i18n>beauskunftung.suche.zipCity}"/>
<Input editable="false" fieldGroupIds="Address" value="{AddressZipCode}" id="inputZipID">
<layoutData>
<l:GridData span="L3 M3 S4"/>
</layoutData>
</Input>
<Input editable="false" fieldGroupIds="Address" value="{AddressCity}" id="inputCityID"/>
</core:FragmentDefinition>
&#13;
如果我用javacript
添加片段
var oFragment = sap.ui.xmlfragment("testistest", "com.natuvion.ddi.fragments.select.address");
var oLayout = this.getView().byId("AddressIDandSoOn");
oLayout.insertContent(oFragment, -1);
&#13;
我收到以下错误:
未捕获(承诺)错误:&#34;元素sap.ui.core.Title #__ title0,元素sap.m.Label #__ label0,元素sap.m.Input#testistest - inputStreetID,Element sap.m .Input#testistest - inputNumberID,Element sap.m.Label #__ label1,Element sap.m.Input#testistest - inputZipID,Element sap.m.Input#testistest - inputCityID&#34;不适用于聚合&#34;内容&#34;元素sap.ui.layout.form.SimpleForm #__ xmlview1 - AddressIDandSoOn
我认为问题在于add方法只能添加一个元素(如果我在片段中只有一个标签就可以了!)。我找了一些元素,它应该包含片段中的所有元素,但我没有找到它。如果我在页面上通过XML添加片段
<core:Fragment id="addressFragment1"
fragmentName="com.natuvion.ddi.fragments.select.address" type="XML">
</core:Fragment>
它有效。此时我不知道如何在SimpleForm中添加片段。我需要动态生成元素,因为我必须根据给定的数据添加它,可能还需要几次
我的问题: - 如何将片段添加到SimpleForm?
答案 0 :(得分:1)
编程API添加/插入内容仅支持单个元素而不支持数组。所以你可以尝试循环遍历数组并逐个添加:
var aFragment = sap.ui.xmlfragment("testistest", "com.natuvion.ddi.fragments.select.address");
var oLayout = this.getView().byId("AddressIDandSoOn");
aFragment.forEach(function (oElement) {oLayout.addContent(oElement);});
您可以考虑的另一个选择是转到sap.ui.layout.form.Form。它内部有聚合:Form - &gt; formContainers - &gt; formElements - &gt;标签,字段[]。
看起来地址片段可能只是一个FormContainer,然后你可以通过一次调用addFormContainer()将它添加到Form中。