Sapui5 弹出对话框/片段中表单上的BindElement()
在我的问题之后,我现在对如何在XML片段中的表单上应用bindElement感到困惑 片段(为简洁起见,请删节): 并通过Sapui5 弹出对话框/片段中表单上的BindElement(),sapui5,Sapui5,在我的问题之后,我现在对如何在XML片段中的表单上应用bindElement感到困惑 片段(为简洁起见,请删节): 并通过 var uid = sap.ui.getCore().byId("inputId").getValue() 但是,我希望使用路径绑定 我遇到的问题是如何获取对simpleform的引用,以便使用bindElement() 如果这是一个观点,我会使用 var theForm = this.getView().byId("EditFormId"); var oBinding
var uid = sap.ui.getCore().byId("inputId").getValue()
但是,我希望使用路径绑定
我遇到的问题是如何获取对simpleform的引用,以便使用bindElement()
如果这是一个观点,我会使用
var theForm = this.getView().byId("EditFormId");
var oBindingContext = event.oSource.getBindingContext();
theForm.bindElement(oBindingContext.getPath())
但是,片段没有与视图紧密耦合,因此这将不起作用。相反,我认为我必须使用
var dlgForm = sap.ui.core.Fragment.byId("theFragmentId", "EditFormId")
var oBindingContext = event.oSource.getBindingContext();
dlgForm.bindElement(oBindingContext.getPath())
这可能是正确的,但我不知道如何在XML视图声明中应用“theFragmentId”。有人能帮我扫除雾吗
编辑:根据公认的答案,我缺少的是所需的片段ID可以作为sap.ui.xmlfragment()函数的第一个(可选)参数提供。绑定到基于片段的控件中的关键是获取该控件的句柄,但是sap.ui.core.fragment.byId(fragId,ctrlId)函数需要片段id。我的问题是我一直关注XML片段声明以及如何在那里应用id。这在SAPUI5中感觉不一致,但我想能够将ID应用于片段可能有一些好处 你可以试试这样的
onOpenDialog:函数(oEvent){
如果(!this.\u oEditSubDetailDialog){
this.\u oEditSubDetailDialog=sap.ui.xmlfragment(“fragmentId”,“namespace.and.path.to.your.fragment”,this);
this.getView().addDependent(this.\u oEditSubDetailDialog);
}
var sPathToBind=oEvent.getSource().getBindingContext().getPath();
byId(“fragmentId”、“EditFormId”).bindElement(sPathToBind);
这是._oEditSubDetailDialog.open();
}
…只需确保事件的源代码管理已绑定到要编辑的上下文即可
您也可以直接在对话框上绑定元素,这样您就不需要在对话框中检索表单控件
this._oEditSubDetailDialog.bindElement(sPathToBind)
关于XML片段可能很有用您可以尝试以下内容
onOpenDialog:函数(oEvent){
如果(!this.\u oEditSubDetailDialog){
this.\u oEditSubDetailDialog=sap.ui.xmlfragment(“fragmentId”,“namespace.and.path.to.your.fragment”,this);
this.getView().addDependent(this.\u oEditSubDetailDialog);
}
var sPathToBind=oEvent.getSource().getBindingContext().getPath();
byId(“fragmentId”、“EditFormId”).bindElement(sPathToBind);
这是._oEditSubDetailDialog.open();
}
…只需确保事件的源代码管理已绑定到要编辑的上下文即可
您也可以直接在对话框上绑定元素,这样您就不需要在对话框中检索表单控件
this._oEditSubDetailDialog.bindElement(sPathToBind)
关于XML片段可能很有用谢谢你。您的示例代码和指向API文档的链接说明了一点,即可以将所需的片段ID作为sap.ui.xmlfragment()函数的第一个(可选)参数,这是我在所有示例中都没有看到的,包括演练的第16节,这是一个简单的确认/重置对话示例.sap.ui.core.Fragment.byId(“fragmentId”、“EditFormId”).bindElement(sPathToBind);为什么会这样?我有两个模型Omodel 1用于视图中的表绑定。oModel2用于片段绑定。this.getView().setModel(oModel1,“表”);this.getView().setModel(oModel2,“list”);这可能吗?通过
this.\u oEditSubDetailDialog.setModel(this.getOwnerComponent().getModel(“myModel”)
和this.\u oEditSubDetailDialog.bindElement(sPathToBind)
谢谢。您的示例代码和指向API文档的链接说明了一点,即可以将所需的片段ID作为sap.ui.xmlfragment()函数的第一个(可选)参数,这是我在所有示例中都没有看到的,包括演练的第16节,这是一个简单的确认/重置对话示例.sap.ui.core.Fragment.byId(“fragmentId”、“EditFormId”).bindElement(sPathToBind);为什么会这样?我有两个模型Omodel 1用于视图中的表绑定。oModel2用于片段绑定。this.getView().setModel(oModel1,“表”);this.getView().setModel(oModel2,“list”);这可能吗?通过this.\u oEditSubDetailDialog.setModel(this.getOwnerComponent().getModel(“myModel”)
和this.\u oEditSubDetailDialog.bindElement(sPathToBind)
this._oEditSubDetailDialog.bindElement(sPathToBind)