Das JSON-Modell ist ein Client-seitiges Modell. Dies bedeutet, dass alle Daten gleichzeitig mit einer einzigen Anfrage geladen werden. In der Standardimplementierung gibt es keine Methoden zum Lesen ausgelagerter JSON-Inhalte (mit top/skip oder einem anderen Namen, den Sie ihnen geben könnten).
Sie haben gesagt, dass Sie eine JSON-Datei haben, die Sie laden. Ein solches Paging macht also aus technischer Sicht keinen Sinn. Dies liegt daran, dass Sie einen Teil einer statischen Datei nicht (einfach) mit Client-Code laden können (insbesondere JSON, der nicht gültig ist, wenn Sie ein Fragment davon lesen).
Wenn Sie nur ein Segment der Datei im Modell speichern möchten, können Sie einfach die gesamte Datei mit jQuery.ajax und dann slice das Array lesen.
Wenn Sie tatsächlich einen RESTful-Webdienst haben, sollte der Paging-Mechanismus Teil dieses Dienstes sein (z. B. sollte er einige Pfad- oder Abfrageparameter zum Angeben der Paging-Parameter haben). Dieser Dienst sollte für jeden Aufruf ein gültiges JSON-Dokument zurückgeben. Auf der Clientseite können Sie einen solchen Dienst mit Hilfe einiger Funktionen (zB in der Steuerung) verwenden:
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);
}
Wenn Sie dies in Kombination mit einer Liste mit der wachsenden Funktion nutzen möchten, dann werden Sie müssen eine neue Art von Modell erstellen - was nicht trivial ist.
Danke für die Antwort @Serban Petrescu Ich habe am Ende erstellt mehrere JSON-Dateien und rufen sie separat, um dies zu simulieren. – polaris