【问题标题】:SAPUI5 OData Binding not refreshing on route navigationSAPUI5 OData 绑定不刷新路由导航
【发布时间】: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


【解决方案1】:

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

    "models": {
         ...
         ...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多