Sapui5 JSONModel是否像OData一样有$top和$skip?

Sapui5 JSONModel是否像OData一样有$top和$skip?,sapui5,Sapui5,在我的应用程序中,我从一个JSON文件中读取数据,然后像这样创建一个模型 var myModel = new sap.ui.model.JSONMOdel("pathToJson"); 我有300个值,但我只想读50,有没有办法做到这一点。我知道我可以使用$top和$skip来使用OData选择一组特定的值。API提供了函数myModel.loadData(),其中包含一个参数opParameters,但我不知道可以传入什么。有人知道这是否可能吗 JSON模型是一个客户端模型。这意味着所有数据

在我的应用程序中,我从一个JSON文件中读取数据,然后像这样创建一个模型

var myModel = new sap.ui.model.JSONMOdel("pathToJson");

我有300个值,但我只想读50,有没有办法做到这一点。我知道我可以使用$top和$skip来使用OData选择一组特定的值。API提供了函数myModel.loadData(),其中包含一个参数opParameters,但我不知道可以传入什么。有人知道这是否可能吗

JSON模型是一个客户端模型。这意味着所有数据都是通过单个请求一次加载的。在标准实现中,它没有读取分页JSON内容的方法(使用top/skip或任何其他名称)

您说过您有一个正在加载的JSON文件。因此,从技术角度来看,这种分页甚至没有意义。这是因为您无法(轻松地)使用纯客户端代码加载静态文件的一部分(特别是JSON,如果您正在读取它的一个片段,则JSON无效)

如果您实际上只想在模型中存储文件的一段,那么只需读取整个文件,然后读取数组即可

如果您实际上有一个RESTful web服务,那么分页机制应该是该服务的一部分(例如,它应该有一些路径或查询参数来指定分页参数)。该服务应该为每个调用返回一个有效的JSON文档。在客户端,您可以借助某些功能(例如,在控制器中)使用此类服务:


如果您想将其与具有不断增长功能的列表结合使用,那么您需要创建一种新类型的模型——这并不是一件小事

感谢@Serban Petrescu的响应,我最终创建了几个json文件,并分别调用它们来模拟这个过程。
onInit: function () {
    this.setModel(new JSONModel([])); // initially an emty array
},

//call this method when you want to read a page
onReadDataPage: function (iTop, iSkip) {
    // use jQuery.ajax or jQuery.get to read a "page" of data; e.g.
    jQuery.ajax({
        url: "your service path",
        data: {
            top: iTop,
            skip: iSkip || 0
        },
        success: this.onDataReceived.bind(this)
    });
},

onDataReceived: function (aData) {
    var oModel = this.getModel();
    oModel.setData(oModel.getData().concat(aData);
}