【发布时间】:2017-07-26 08:28:08
【问题描述】:
我尝试从 OData 源准备数据,以便在我的 fiori 应用程序的条形图中显示它。为此,我在 manifest.json 中设置了 OData 模型。带有列表的测试,只需使用
items="{path : 'modelname>/dataset'}
工作正常并显示内容。
为了为图表 (VizFrame) 准备数据,我在视图 (mvc:XMLView) 的控制器中使用了 onInit() 函数。数据准备与question 中讨论的类似。
首先我获得了ODataModel:
var oODataModel = this.getOwnerComponent().getModel("modelname");
接下来我进行绑定:
var oBindings = oODataModel.bindList("/dataset");
不幸的是,oBindings().getContexts() 数组始终为空,oBindings.getLength() 也为零。因此,VizFrame 仅显示“无数据”。
可能是onInit()函数期间数据模型没有完全加载,还是我对数据的访问方式有误解?
提前致谢
更新
我通过使用从将数据显示为列表的视图中自动创建的绑定暂时解决了这个问题。我从绑定getView().byId("myList").getBindings("items") 中获取“dataReceived”事件并在那里进行计算。图的模型(因为它用于不同的视图)在 Component.js 中创建,并在 Core sap.ui.getCore().setModel("graphModel") 中注册。
我认为这个解决方案很脏,因为图形数据依赖于来自不同视图的列表数据,这会导致问题,例如当您使用不断增长的列表时(因为绑定中的数据得到更新并且从 odata 模型中选择了不同的范围)。
有什么建议,我如何在不依赖不同列表的情况下获取 odata 模型条目?
【问题讨论】:
标签: javascript odata sapui5