如何在 UI5 XML-View 中动态获取特定的 EntitySet?

问题描述

有没有办法传递动态参数来标识 UI5 XML-View 中的特定 EntitySet?我正在使用带有 ODataV2 的 UI5,这是我的 UI5 文本对象的 XML:

<add key="ida:GraphResourceId" value="https://graph.microsoft.com" />
<add key="ida:GraphUserUrl" value="https://graph.microsoft.com/{0}/me?api-version=2013-11-08" />
<add key="todo:TodoListResourceid" value="api://xxxxxxxxxxx" />
<add key="todo:TodoListBaseAddress" value="http://localhost/Test/" />
<add key="ida:ClientId" value="xxxxxxx" />
<add key="ida:AppKey" value="xxxxxxxxx" />
<add key="ida:Tenant" value="aaaaaaaaaaa" />
<add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}" />
<add key="ida:RedirectUri" value="http://localhost/Test" />

请注意,'AR' 是特定 EntitySet 的 Key,它为我提供来自特定 ProductSet 的 ProductName。

但是不是对密钥进行硬编码,而是有没有办法动态传递它?像这样的东西,例如:

<Tex text="{/ProductSet('AR')/ProductName}"/>

解决方法

您应该使用控制器中的 Property BindingElement Binding。 在这里您可以编写任何您喜欢的路径。

,

所以我通过在控制器中预加载我需要的 EntitySet 解决了这个问题。我不知道这是否是最好的方法,但它可以按预期工作。 我在控制器的“onBeforeRendering”方法中预加载了 ProductSet,因此在进行视图的其他异步调用时数据已经可用。

onBeforeRendering:function(){           
    this.loadProductSet();  
    },loadProductSet: function () {
        return new Promise(function (resolve,reject) {
            this.getView().getModel().read("/ProductSet",{
                success: function (oData) {
                    resolve();
                }.bind(this),error: function (oError) {
                    reject();
                }.bind(this)

            });
        }.bind(this));

    },

在 XML 视图中,我使用格式化程序来传递特定 Set 的 ID:

<ObjectAttribute  title="Name" text= "{parts :['ProductKey'],formatter: '.formatter.getProductSet' }" />

这里是格式化程序代码:

getProductSet: function (sProductKey) {
        var oModel = this.getView().getModel();
        var sProductName = oModel.getProperty("/ProductSet('" + sProductKey + "')/ProductName");
        return sProductName;
    }

但是如果有一种方法可以在 XML 中动态传递参数,那还是很不错的 :) 希望有一天它会被实现。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...