我正在创建一个SAP Fiori
应用程序。我在input
框中有dialog
,我必须获取输入值。我正在fragment view
中定义对话框。
当我尝试给id
输入时,我收到错误,因为添加了重复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();
}
答案 0 :(得分:7)
每次需要打开对话框时,都会创建一个新的对话框片段实例。 这将导致重复的ID问题。请在控制器中保留一个对话框片段实例。
请参阅示例代码:
DialogButton:function(oEvent) {
if(!this.oDialog) {
this.oDialog = sap.ui.xmlfragment("you.dialog.id", this );
}
this.oDialog.open();
}
答案 1 :(得分:1)
看看以下帮助 IDs in Declarative XML or HTML Fragments您需要在实例化片段时添加ID,这样控件的前缀是唯一的
答案 2 :(得分: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();
}