我目前正在学习如何在没有模板的情况下手动开发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并将其打开。但是我无法将从点击表中提取的实体绑定到新对话框并显示其值。
有人可以帮我吗?这应该如何工作?
答案 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();
...