javascript - 如何将单个实体显示为弹出窗口

标签 javascript odata sapui5

我目前正在学习如何在没有模板的情况下手动开发 UI5。我目前正在通过对系统的 oData 请求获取模型,并将返回的实体集显示为带有 ColumnListItems 的表格。

表格 View 的 XML:

    <Table noDataText="Es stehen keine Aufträge in der Queue" id="table0" 
        items="{ImpMan>/QueryEntrySet}" 
        growingDirection="Downwards" 
        modeAnimationOn="false" 
        mode="SingleSelectMaster" 
        selectionChange="onSelectionChange">

       <!-- Here is column logic and ColumnListItem tags etc. -->
    </Table>

我已将 SelectionChange-Listener 设置为方法 onSelectionChange

表格 View Controller :

onSelectionChange: function (oEvent) {
    var oSelectedItem = oEvent.getSource().getSelectedItem();
    var context = oSelectedItem.getBindingContext("ImpMan");
    var entity = context.oModel.getProperty(context.sPath);
    alert(entity.id);
}

我能够获取整个单击的实体和显示 /EntitySet('ID')context.sPath。所以我确切地知道点击了哪个实体。现在我想向该实体显示所有详细信息,因此必须将其传递给弹出窗口。我已经创建了一个带有 objectlistitem 的片段:

<core:FragmentDefinition xmlns:core="sap.ui.core">
<Dialog xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:cd="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1" xmlns:action="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1" xmlns="sap.m" id="transportDialog" title="Auftrag">
    <ObjectListItem type="Active" number="{path:'ImpMan>PIMPDATE',formatter:'.formatter.getDate'}" numberUnit="Geplanter Import" intro="Gruppe: {ImpMan>GROUP_ID}" id="item0" title="{ImpMan>TRKORR}" icon="sap-icon://product" highlight="{path:'ImpMan>CRIT',formatter:'.formatter.critState'}">
        <attributes>
            <ObjectAttribute text="{ImpMan>ID}" id="id_att"/>
            <ObjectAttribute text="{ImpMan>ID_TEXT}" id="description" title="Beschreibung"/>
            <ObjectAttribute text="{ImpMan>LAST_EDIT}" id="last_change" title="Letzte Änderung"/>
            <ObjectAttribute text="{ImpMan>CHANGEDBY}" id="editor" title="Verantwortlicher"/>
        </attributes>
    </ObjectListItem>
</Dialog>

我还知道如何将片段定义为对话框并打开它。但我无法将从单击的表中提取的实体绑定(bind)到新对话框并显示其值..

有人可以帮我解决这个问题吗?这应该如何运作?

最佳答案

首先不建议直接访问内部变量,所以你必须改变。

 var entity = context.oModel.getProperty(context.sPath);

 var entity = context.getModel().getProperty(context.getPath());

现在关于你的问题,当你打开一个对话框时,你的对话框中将有一个变量,你可以在它上面绑定(bind)元素,例如:

... 
var oDialog = sap.ui.xmlfragment(
                        "<fragment_path>", this);
...
oDialog.bindElement(context.oModel.getProperty(context.getPath()));
oDialog.open();
...

关于javascript - 如何将单个实体显示为弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51840843/

相关文章:

sapui5 - 如何将控件引用传递给 XMLView 中的格式化程序?

api - 无法在 Oauth 中获取访问 token 链接

javascript - 通过缩放调整自定义图像标记的大小 - Google Maps API v3

count - OData v4 WebAPI 响应中的项目计数

javascript - CRM 动态 : oData string javascript

c# - 如何将 Url.Route 用于 OData 路由

javascript - 将信息从源站点传递到 JavaScript 应用程序链接的安全方法?

javascript - 使用 JavaScript 将数组元素格式化为大写和小写格式

javascript - 如何处理 WP 主题 .js 中文本的翻译

javascript - 与 pjax 一起使用时取消绑定(bind) jQuery 无限滚动