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

时间:2018-08-14 11:55:36

标签: javascript odata sapui5

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

用于表格视图的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

表视图控制器:

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

我能够获得整个点击的实体以及显示context.sPath的{​​{1}}。因此,我确切知道单击了哪个实体。现在,我想向该实体显示所有详细信息,因此必须将其传递给弹出窗口。我已经用objectlistitem创建了一个片段:

/EntitySet('ID')

我也知道如何将片段定义为Dialog并将其打开。但是我无法将从点击表中提取的实体绑定到新对话框并显示其值。

有人可以帮我吗?这应该如何工作?

1 个答案:

答案 0 :(得分:1)

首先,不建议直接访问内部变量,因此您必须进行更改。

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

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

现在,关于您的问题,当您打开对话框时,对话框将具有一个变量,您可以像这样对BindElement进行操作:

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