【发布时间】:2017-01-23 00:16:34
【问题描述】:
继我关于Is it possible to use 2 models in one view 的问题之后,我现在对如何在 XML 片段中的表单上应用 bindElement 感到困惑。
片段(为简洁起见):
<core:FragmentDefinition
namespaces here...>
<Dialog id="theDialogId" title="Edit Subdetail">
<content>
<f:SimpleForm id="EditFormId" editable="true" >
<f:content>
<Label id="lblName" text="Name" labelFor="inpName" />
<Input id="inpName" editable="true" value="{name}"/>
</f:content>
</f:SimpleForm>
</content>
</Dialog>
</core:FragmentDefinition>
挑战:假设我有一个包含路径 /master/0/detail/6/subdetail/2 的模型 - 如何将 simpleform 绑定到该路径?在我见过的例子中,对话框中的元素被赋予了一个值
sap.ui.getCore().byId("inputId").setValue("some value)
并通过
访问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 应用于片段可能在某处有一些便利。
【问题讨论】:
标签: sapui5