我正在使用JSONModel从HANA读取数据,并简单地将URL传递给源并检索它,如下所示:
var data = new sap.ui.model.json.JSONModel(urlPath);然后我可以将它绑定到我的视图:this.getView().setModel(data);
我还看到了下面的方法,即先创建一个ODataModel,然后从数据创建JSONModel。
var oModel = new sap.ui.model.odata.ODataModel(urlPath);
oModelJson = new sap.ui.model.json.JSONModel();
oModel.read("/Items",
null,
["$filter=ImItems eq 'imputParameter'"],
null,
function(oData, oResponse) {
oModelJson.setData(oData);
},
null
);先创建ODataModel和立即创建JSONModel有什么区别。因此,假设我从数据库中得到大约5000个数据点,我应该使用哪种方法,或者没有区别?
发布于 2017-01-06 11:10:02
JSONModel是一个客户端模型,用于获取数据并将数据设置为JSON格式的视图。
ODataModel是OData协议的一个模型实现。这允许在OData实体上执行CRUD操作。JSONModel不支持Create/Update/Delete/Batch操作。
因此,在您的场景中,我建议始终使用ODataModel来执行CRUD操作(包括读取)。然后可以使用JSON模型将数据绑定到视图。
请注意,最好是每个应用程序有一个ODataModel,并将多个JSONModel绑定到视图。
考虑使用ODataModel V2,因为您已经提到,如果您不使用UI中的所有数据,那么您将处理5K数据点。使用setSizeLimit确保设置了正确的上限。
发布于 2017-05-20 10:20:01
这两种模型都可以在不冲突的情况下使用。事实上,大多数应用程序都会同时使用这两种方法。
您希望使用OData模型从服务器发送/检索数据。OData模型将为您构建URL。例如,如果您希望在不使用OData模型的情况下对数据进行过滤、排序或分页,则需要自己构建URL。
yourUrl.com/EntitySet?$filter eq Property1='Value'&$sort= ..... &top=... etc.如果没有OData模型,这将很困难,并使应用程序更难维护和调试。让OData模型为您做这件事:
ODataModel.read("/EntitySet, {
filters: [new Filter("Property1", "EQ", "Value")]
});不过,在我看来,OData模型的最大好处是直接从XML视图绑定。
<List items="{/EntitySet}">
<items>
<StandardListItem title="{objectTitle}"/>
</items>
</List>这将自动调用后端,从实体集中检索数据,并将其绑定到列表。不需要构造任何URL,进行任何调用等。
使用JSON模型从OData服务检索数据只会使事情变得更加困难。
但是..。话虽如此..。JSON模型是一个非常强大的工具。您可以使用它来存储配置数据或您希望在UI中保存和操作的任何数据。您可以在应用程序中使用JSON模型作为一种迷你数据库,它可以在应用程序中全局传递数据。
总之,您应该使用OData模型来获取/发送数据。您应该使用JSON模型进行本地数据存储。尝试同时使用这两种方法不会发生冲突。
发布于 2017-01-07 03:23:29
它们之间的一个主要区别是:
SAPUI5中的许多控件(例如smarttable )都会自动绑定到odata实体,这意味着它会基于Odata元数据XML文件动态创建列和元组。在这种情况下,您不能使用JSON模型。
我会选择OData,因为很多SAPUI5组件都有这种“自动绑定”。但是,我也遇到了OData实体结构不好的情况,这意味着一些SAP组件的“自动绑定”不能像预期的那样工作。
在这些场景中,我必须从OData中取出JSON,创建/销毁一些属性,然后绑定到前面提到的SAP组件。
https://stackoverflow.com/questions/41494790
复制相似问题