Как работает нумерация страниц, полученная из API в Nativescript - PullRequest
0 голосов
/ 06 марта 2020

Я не получаю понятия о том, как работает нумерация страниц, загружает больше запрошенных данных из json API. Даже я получаю данные первой страницы, но для остальных страниц не получаю. Если я использую два API для подкачки и извлечения данных, но все еще не получаю. Любой, кто поможет мне прояснить эту концепцию, пожалуйста ..

main-view-model. js

const httpModule = require("tns-core-modules/http");
var observableModule = require("tns-core-modules/data/observable");
function RegisterViewModel() {
  var viewModel = observableModule.fromObject({
    _sourceDataItems: [],
    initDataItems: function () {
      //This url for the pagination
       var url1 = "https://example.org/api.php?action=query&gcmtitle=Category:xyz&pilimit=max&prop=pageimages&pithumbsize=200&generator=categorymembers&format=json&gcmcontinue=";

       httpModule.getJSON(url1).then((r) => {

         id = r.continue.gcmcontinue
        gcm.push(id)
         console.log(gcm)
         var pageid = [];
         for (var id in r.query.pages) {
           pageid.push(id);
         }
         for (var i = 0; i < pageid.length; i++) {


       if (r.query.pages[pageid[i]].thumbnail == null) {
         let abc = {
           ttt: r.query.pages[pageid[i]].title,
           path1: "~/images/xyz.png"
        }
         this._sourceDataItems.push(abc)
       }
       else {
         let aaa = {
          ttt: r.query.pages[pageid[i]].title,
          path1: r.query.pages[pageid[i]].thumbnail.source
        }
         this._sourceDataItems.push(aaa)
      }

         }

       }, (e) => {
       });

      var gcm = [];

      //This url for the fetching the data on scroll
      for (var i = 0; i < gcm.length; i++) {

        var url2 = "https://example.org/api.php?action=query&gcmtitle=Category:xyz&pilimit=max&prop=pageimages&pithumbsize=200&generator=categorymembers&format=json&gcmcontinue=" + gcm[i];

        httpModule.getJSON(url2).then((r) => {
            id= r.continue.gcmcontinue)
        gcm.push(id)
          console.log(r.continue.gcmcontinue)
          var pageid = [];
          for (var id in r.query.pages) {
            pageid.push(id);
          }
          for (var i = 0; i < pageid.length; i++) {

             //placeholder Image

            if (r.query.pages[pageid[i]].thumbnail == null) {
              let abc = {
                ttt: r.query.pages[pageid[i]].title,
                path1: "~/images/xyz.png"
              }
              this._sourceDataItems.push(abc)
            }
            else {
              let aaa = {
                ttt: r.query.pages[pageid[i]].title,
                path1: r.query.pages[pageid[i]].thumbnail.source
              }
              this._sourceDataItems.push(aaa)
            }

          }

        }, (e) => {
        });
      }

    },

    _DataItems: [],

    addMoreItemsFromSource: function (chunkSize) {
      let newItems = this._sourceDataItems.splice(0, chunkSize);

      this._DataItems = this._DataItems.concat(newItems);

    },
    onLoadMoreItemsRequested: function (args) {
      console.log("---load item called----");
      const that = new WeakRef(this);
      const listView = args.object;
      if (this._sourceDataItems.length > 0) {
        setTimeout(function () {
          that.get().addMoreItemsFromSource(5);
          listView.notifyLoadOnDemandFinished();
        }, 100);
        args.returnValue = true;
      } else {
        args.returnValue = false;

      }
    },
  });
  return viewModel;
}
exports.RegisterViewModel = RegisterViewModel;

Даже загрузка данных работает нормально для первой страницы. При прохождении gcm continue id это не займет, пожалуйста, помогите мне прояснить эту концепцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...