如何在UI5 xml视图中动态地获得特定的EntitySet ?



是否有一种方法可以通过动态参数来识别UI5 xml视图中的特定EntitySet ?我使用UI5与ODataV2,这是我的一个UI5文本对象的XML:

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

注意'AR'是一个特定的EntitySet的Key,它给了我一个特定的ProductSet的ProductName。

但是,而不是硬编码的关键,有没有一种方法来动态传递它?例如:

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


你应该在控制器中使用属性绑定或元素绑定。在这里你可以组成任何你喜欢的路径。

所以我通过在控制器中预加载EntitySet来解决这个问题。我不知道这是不是最好的方法,但它的效果如我所愿。我在"onbeforeerender"中预加载了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视图中,我使用formatter传递特定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中动态传递参数的方法,那就太好了:)希望有一天它会实现。

最新更新