SAPUI5的OData绑定不刷新的路线导航(SAPUI5 OData Binding not re

2019-10-28 08:14发布

对于SAPUI5应用程序我创建具有实体“查询” OData服务。 该服务本身工作正常。

为了扩大这一服务的顶部的第一SAPUI5应用程序,我把演练,以获得基本知识: https://sapui5.hana.ondemand.com/#/topic/2366345a94f64ec1a80f9d9ce50a59ef

现在,如果我通过我的一个服务并绑定为模型“询问”更换罗斯文服务,这一切工作正常,除了一两件事。 当点击一个列表项(“查询/>查询”),它加载该对象的通过数据的细节正确绑定- 但只有一次! 当回到主视图,并选择另一个列表项,它再次打开详细视图,但仍显示第一个列表项的详细信息,点击。

这似乎是当一个新的URL /路径,通过点击主视图的一个列表项开不刷新的详细视图。 但是,它的工作原理100%,在演练示例中的罗斯文OData服务我的环境。

是否有人有线索?

一些编码...

列表显示:

<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>

详细控制器-上INIT火灾事件:

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

Answer 1:

用了一段时间了类似问题的痛苦后,我终于找到了罪魁祸首 - 在manifest.json中的模型设置,我改变了“defaultBindingMode”,从“一次性”到“单向”。

    "models": {
         ...
         ...

        "": {
            "type": "sap.ui.model.odata.v2.ODataModel",
            "settings": {
                "defaultOperationMode": "Server",
                "defaultBindingMode": "OneWay",
                "defaultCountMode": "Request"
            },
            "dataSource": "yourdatasource",
            "preload": true
        }
   }


文章来源: SAPUI5 OData Binding not refreshing on route navigation