首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >弹出式对话框/片段中表单上的BindElement()

弹出式对话框/片段中表单上的BindElement()
EN

Stack Overflow用户
提问于 2017-01-23 08:16:35
回答 1查看 6.7K关注 0票数 0

接着我提出的关于Is it possible to use 2 models in one view的问题,我现在对如何在bindElement片段中的表单上应用XML感到困惑。

片段(为简洁起见进行了删减):

代码语言:javascript
运行
复制
<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的模型-如何将简单形式绑定到此路径?在我所见过的示例中,对话框中的元素由

代码语言:javascript
运行
复制
sap.ui.getCore().byId("inputId").setValue("some value)

并通过以下方式访问

代码语言:javascript
运行
复制
var uid = sap.ui.getCore().byId("inputId").getValue()

但是,我想对路径使用绑定。

我遇到的问题是如何获得对简单表单的引用,以便可以使用bindElement()。

如果这是一个视图,我会使用

代码语言:javascript
运行
复制
var theForm = this.getView().byId("EditFormId");

var oBindingContext = event.oSource.getBindingContext();
theForm.bindElement(oBindingContext.getPath())

但是,片段并不与视图紧密耦合,因此这将不起作用。相反,我认为我必须使用

代码语言:javascript
运行
复制
var dlgForm = sap.ui.core.Fragment.byId("theFragmentId", "EditFormId")

var oBindingContext = event.oSource.getBindingContext();
dlgForm.bindElement(oBindingContext.getPath())

这可能是正确的,但是我不知道如何在XML view声明中应用"theFragmentId“。有人能帮我驱散迷雾吗?

编辑:根据公认的答案,我缺少的是所需的片段ID可以作为sap.ui.xmlfragment()函数的第一个(可选)参数给出。绑定到基于片段的控件的关键是获得它的句柄,但是sap.ui.core.Fragment.byId(fragId,ctrlId)函数需要一个片段id。我的问题是,我专注于XML片段声明以及如何在其中应用id。这在SAPUI5中感觉不一致,但我猜能够将ID应用到片段中可能会有一些便利。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 09:30:08

你可以试试像这样的东西。

代码语言:javascript
运行
复制
onOpenDialog: function(oEvent) {
    if(!this._oEditSubDetailDialog){
            this._oEditSubDetailDialog = sap.ui.xmlfragment("fragmentId", "namespace.and.path.to.your.fragment", this);
            this.getView().addDependent(this._oEditSubDetailDialog);
    }

    var sPathToBind = oEvent.getSource().getBindingContext().getPath();
    sap.ui.core.Fragment.byId("fragmentId","EditFormId").bindElement(sPathToBind);

    this._oEditSubDetailDialog.open();
}

...just需要确保事件的源代码控件绑定了您要编辑的上下文。

你也可以直接在对话框上使用bindElement,这样你就不需要在对话框中检索表单控件了……

代码语言:javascript
运行
复制
this._oEditSubDetailDialog.bindElement(sPathToBind)

关于XML片段的This API documentationthis walkthrough guide可能会很有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41797603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档