2016-09-27 85 views
0

我有一个实体的oData模型:Order,OrderInformation。 Order和OrderInformation之间有1:1的关联。在SAPUI5 Odata模型中的实体getProperty不起作用

现在在视图中,基于OrderInformation中的一个值,我应该隐藏/显示一个按钮。

在控制器中,获取OrderInformation-> appUrl的值的以下逻辑不起作用,但我可以读取实体'Order'的属性。

Init: function(){ 
    // Not working 
    var prop = this.getView().getModel().getProperty("/OrderInformations('"+ this._orderId + "')/appUrl"); 
    // Working 
    var prop = this.getView().getModel().getProperty("/Orders('"+ this._orderId + "')/orderType"); 
    } 

在交易/ IWFND/GW_CLIENT,下面的查询给了我正确的值

/sap/opu/odata/sap/<<ServiceURL>>/OrderInformations('132123')/appUrl 

我也试图与attachRequestCompleted,但仍然没有成功。

Init:function(){ 
    var oModel = this.getView().getModel(); 
    oModel.attachRequestCompleted(function(oEvent){ 
     var myval = model.getProperty("/OrderInformations('"+ this._orderId + "')/appUrl"); 
     }); 
} 

有人可以提供任何想法什么可以出错?

BR Nilesh制作

回答

2

可以使用oModel.read功能触发到后端的请求,成功处理程序中你读响应的结果和处理接收到的数据

var test = oModel.read("OrderInformations('" + this._orderId + "')", { 
    success: function(oData, response) { 
     var appUrl = oData.result.appUrl; //response.data.appUrl also works 
     // do something 
    }, 
    error: function (oError) { 
     // Error handling on failed response 
    } 
}); 

API参考:https://openui5beta.hana.ondemand.com/#docs/api/symbols/sap.ui.model.odata.ODataModel.html#read

我不懂这行,你写道:

在控制器中,获取值 OrderInformation-> appUrl的值不起作用,但我可以读取 实体“Order”的属性。

订单是另一个具有属性的实体,并且其工作方式类似于上面所述? 你是否像这样初始化你的模型: /sap/opu/odata/sap/<<ServiceURL>>/OrderOrderInformation是Order的相关实体吗?如果是用它定义了两个实体

我希望这回答了你的问题之间的关系的OData服务的导航属性扩展读取时,如果留下什么东西,让我知道

问候

+0

嗨,你在分析中发现。我只是不想使用mode.read进行另一个调用。似乎问题是我试图读取甚至没有加载到内存中的东西的属性。我最终确实使用了Mode.read。谢谢 ! –