SAPUI5 - 在SimpleForm中添加Fragment

时间:2017-04-19 10:40:03

标签: sapui5

我在向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;
&#13;
&#13;

如果我用javacript

添加片段

&#13;
&#13;
	var oFragment = sap.ui.xmlfragment("testistest", "com.natuvion.ddi.fragments.select.address");
  var oLayout = this.getView().byId("AddressIDandSoOn");
  oLayout.insertContent(oFragment, -1);
&#13;
&#13;
&#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?

1 个答案:

答案 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中。