2

我正在创建一个SAP Fiori应用程序。我有input一个dialog盒子,我必须获取输入值。我正在定义对话框fragment view

当我尝试提供idfor 输入时,我收到一个错误,因为添加了具有重复 id 的元素。

------ 片段视图------

<core:FragmentDefinition
  xmlns="sap.m"
  xmlns:core="sap.ui.core"
  xmlns:app="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1">
  <Dialog title="Title"  class="sapUiPopupWithPadding" >
    <content>  
        <HBox> 
           <items> 
              <Text  text="Name"></Text> 
              <Input  value="" id="myId"  > </Input> 
           </items> 
       </HBox> 
    </content>
    <beginButton>
        <Button text="Ok"  press="DialogButton" />
    </beginButton>
</Dialog>

---控制器代码---

DialogButton:function(oEvent) {

   var myIdValue=sap.ui.getCore().byId("myId").getValue();

   console.log("ID Value :::"+  myIdValue);

   oDialogFragment.close();

}

在此处输入图像描述

4

3 回答 3

7

每次需要打开对话框时,您都会创建一个新的对话框片段实例。这将导致重复的 ID 问题。请在您的控制器中保留一个对话框片段实例。

请看示例代码:

DialogButton:function(oEvent) {
   if(!this.oDialog) {
      this.oDialog =  sap.ui.xmlfragment("you.dialog.id", this );
   }
   this.oDialog.open();
}
于 2014-08-14T07:01:04.310 回答
1

take a look at the following help IDs in Declarative XML or HTML Fragments you need to add an ID when the fragment is instantiated, that way the control has a prefix which is unique

于 2014-08-14T06:27:50.227 回答
1

将片段添加为依赖于主视图也是一个好主意。这样,当主视图被销毁时,它将被销毁。并且在离开视图并返回时不会出现重复的 id 错误。

DialogButton:function(oEvent) {
   if(!this.oDialog) {
      this.oDialog =  sap.ui.xmlfragment("you.dialog.id", this );
      this.getView().addDependent(this.oDialog);
   }
   this.oDialog.open();
}
于 2021-01-04T14:53:39.690 回答