【发布时间】:2018-06-04 00:46:57
【问题描述】:
对于 SAPUI5 应用程序,我创建了一个具有实体“查询”的 OData 服务。 服务本身运行良好。
为了在该服务之上构建第一个 SAPUI5 应用程序,我参加了演练以了解基础知识:https://sapui5.hana.ondemand.com/#/topic/2366345a94f64ec1a80f9d9ce50a59ef
现在,如果我用我的一项服务替换 Northwind 服务并将其绑定为模型“查询”,除了一件事外,它一切正常。 当点击一个列表项(“enquiry/>查询”)时,它会通过数据绑定正确加载该对象的详细信息 - 但只有一次! 返回主视图并选择另一个列表项时,它会再次打开详细视图,但仍会显示单击的第一个列表项的详细信息。
当通过单击主视图中的列表项打开新的 URL/路径时,似乎没有刷新详细视图。但它在我使用 Northwind OData 服务的环境中的演练示例中 100% 有效。
有人知道吗?
一些编码...
列表视图:
<mvc:View
controllerName="sap.ui.demo.wt.controller.InvoiceList"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<List
class="sapUiResponsiveMargin"
width="auto"
items="{path : 'enquiry>/Enquiries'}">
<items>
<ObjectListItem
title="{enquiry>CompanyName}"
type="Navigation"
press="onPress">
</ObjectListItem>
</items>
</List>
</mvc:View>
列表控制器 - 点击列表项时触发 onPress 事件:
[..]
onPress: function (oEvent) {
var oItem = oEvent.getSource();
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("detail", {
enquiryPath: oItem.getBindingContext("enquiry").getPath().substr(1)
});
}
[..]
详细视图:
<mvc:View
controllerName="sap.ui.demo.wt.controller.Detail"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Page
title="{i18n>detailPageTitle}">
<ObjectHeader
intro="{enquiry>EnquiryID}"/>
</Page>
细节控制器 - 在初始化时触发事件:
onInit: function () {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.getRoute("detail").attachPatternMatched(this._onObjectMatched, this);
},
_onObjectMatched: function (oEvent) {
this.getView().bindElement({
path: "/" + oEvent.getParameter("arguments").enquiryPath,
model: "enquiry"
});
}
【问题讨论】:
-
我从给定的代码中找不到任何错误。你现在能解决这个问题吗?
-
否则,请提供更多代码以便我们重现该行为。
-
您是否尝试过在详细信息页面中的 bindElement 语句之前调用 this.getView().unbindElement("yourmodelname") ?
标签: data-binding odata sapui5 master-detail hana-xs