使用按钮

时间:2018-10-03 08:47:29

标签: sapui5 simple-form

我正在使用SAPUI5 XML视图

myView.view.xml

<f:SimpleForm id="form1"/>
   <f:content id="content1">
     <core:Title text="" />
     <m:Label text="Label A" />
     <m:Input value="10/5/2548" enabled="false" />
     <m:Label text="ชั้นที่/ปีที่" />
     <m:Input value="1" />
     <core:Title text="" />
     <m:Label text="Label B" />
     <m:Input value="3.25" />
     <core:Title text="" />
   </f:content>
</f:SimpleForm>

myController.controller.js

addNewContent:function(){
   var content = this.getView().byId("form1").getContent();
   this.getView().byId("form1").addContent(content);
}

错误消息

  

对元素的聚合“内容”无效   sap.ui.layout.form.SimpleForm #__ xmlview1--form1

我想在单击(id="content1")按钮时将内容addNewContent复制到按钮

任何人都谢谢你

添加更多信息 this is what i want to do

2 个答案:

答案 0 :(得分:0)

技术上

getContent()方法返回一个数组sap.ui.core.Element[]

addContent()方法使用单个sap.ui.core.Element作为参数。

所以您需要执行以下操作:

this.getView().byId("form1").addContent(content[0]);

或者这个:

oForm = this.getView().byId("form1");
content.forEach(oControl => oForm.addContent(oControl))

,或者如果未使用ES6:

oForm = this.getView().byId("form1");
for (var i = 0; i < content.length; i++) {
    oForm.addContent(content[i]);
}

功能上

我不清楚您要达到的目标。根据您的代码段,您正在尝试从同一位置复制并粘贴到同一位置...

答案 1 :(得分:0)

希望这会对您有所帮助,尝试克隆表格并将其附加到容器中。

XML视图

<Button text="+" press="cloneContent" /><!-- Button for cloning -->
<f:SimpleForm id="form1" editable="false" layout="ResponsiveGridLayout" title="Address" labelSpanXL="3" labelSpanL="3" labelSpanM="3" labelSpanS="12" adjustLabelSpan="false" emptySpanXL="4" emptySpanL="4" emptySpanM="4" emptySpanS="0" columnsXL="1" columnsL="1" columnsM="1" singleContainerFullSize="false">
  <f:content>
    <core:Title text="" />
    <Label text="Label A" />
    <Input value="10/5/2548" enabled="false" />
    <Label text="ชั้นที่/ปีที่" />
    <Input value="1" />
    <core:Title text="" />
    <Label text="Label B" />
    <Input value="3.25" />
    <core:Title text="" />
  </f:content>
</f:SimpleForm>
<VBox id="contentHolder"></VBox><!-- clone form holder -->

控制器

cloneContent: function(oEvent){
    var oForm = this.getView().byId("form1");
    if (oForm) {
        oFormClone = oForm.clone();
        oFormClone.setTitle("");
        var oHolder = this.getView().byId("contentHolder");
        if (oHolder) {              
            //oHolder.removeAllItems();//if you want to remove all the previous added item you can uncomment this line
            oHolder.addItem(oFormClone);
        }
    }
}

注意:克隆后要注意结合。如果有任何问题,可以使用oHolder重新绑定。