Скопируйте контент в новый контент с помощью кнопки - PullRequest
0 голосов
/ 03 октября 2018

Я использую SAPUI5 XML view

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 Кнопка

Всем помогите, спасибо

Добавьте дополнительную информацию Это то, что я хочу сделать

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Надеюсь, это поможет вам, попробуйте клонировать форму и добавить ее в контейнер.

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 для повторной привязки, если у вас есть какие-либо проблемы.

0 голосов
/ 03 октября 2018

Технически

Метод 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]);
}

Функционально

Мне не ясно, чего вы пытаетесь достичь.Основываясь на фрагменте кода, вы пытаетесь скопировать и вставить в то же место ...

...