Data binding SAPUI5 OData绑定未刷新路由导航

Data binding SAPUI5 OData绑定未刷新路由导航,data-binding,odata,sapui5,master-detail,hana-xs,Data Binding,Odata,Sapui5,Master Detail,Hana Xs,对于SAPUI5应用程序,我创建了一个OData服务,其中包含一个实体“查询”。 服务本身运行良好 为了在该服务的基础上构建第一个SAPUI5应用程序,我进行了演练,了解了一些基本知识: 现在,如果我用我的one服务替换Northwind服务,并将其绑定为模型“查询”,那么除了一件事之外,一切都很好。 单击列表项(“查询/>查询”)时,它会通过数据绑定正确加载该对象的详细信息-,但仅加载一次 返回主视图并选择另一个列表项时,它会再次打开详细视图,但仍会显示单击的第一个列表项的详细信息 通过单击主

对于SAPUI5应用程序,我创建了一个OData服务,其中包含一个实体“查询”。 服务本身运行良好

为了在该服务的基础上构建第一个SAPUI5应用程序,我进行了演练,了解了一些基本知识:

现在,如果我用我的one服务替换Northwind服务,并将其绑定为模型“查询”,那么除了一件事之外,一切都很好。 单击列表项(“查询/>查询”)时,它会通过数据绑定正确加载该对象的详细信息-,但仅加载一次 返回主视图并选择另一个列表项时,它会再次打开详细视图,但仍会显示单击的第一个列表项的详细信息

通过单击主视图中的列表项打开新的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: 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"
        });
    }
详细视图:

<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: 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"
        });
    }

在经历了一段时间的类似问题之后,我终于找到了罪魁祸首——在manifest.json中的模型设置中,我将“defaultBindingMode”从“OneTime”更改为“OneWay”


在经历了一段时间的类似问题之后,我终于找到了罪魁祸首——在manifest.json中的模型设置中,我将“defaultBindingMode”从“OneTime”更改为“OneWay”


我从给定的代码中找不到任何错误。您现在能解决这个问题吗?否则,请提供更多代码,我们可以使用这些代码重现该行为。您是否尝试在详细信息页面中的bindElement语句之前调用此.getView().UnbinElement(“您的ModelName”)?我找不到给定代码中的任何错误。您现在可以解决问题了吗?否则,请提供更多代码,我们可以使用这些代码重现该行为。您是否尝试在详细信息页面中的bindElement语句之前调用此.getView().UnbinElement(“您的ModelName”)?