0

有没有办法传递动态参数来识别 UI5 XML 视图中的特定实体集?我将 UI5 与 ODataV2 一起使用,这是我的 UI5 文本对象的 XML:

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

请注意,“AR”是特定实体集的键,它为我提供了特定产品集中的产品名称。

但是不是硬编码密钥,有没有办法动态传递它?例如这样的事情:

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


                        
4

2 回答 2

0

所以我通过在控制器中预加载我需要的 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 中动态传递参数,它仍然会非常好:) 希望有一天它会实现。

于 2021-02-03T12:14:11.103 回答
0

您应该使用控制器中的属性绑定元素绑定。在这里,您可以编写任何您喜欢的路径。

于 2021-02-01T14:26:16.900 回答