Динамическое добавление элементов в nativescript-пейджере - PullRequest
0 голосов
/ 18 октября 2019

Я использую нумерацию страниц внутри своего пейджера, но, похоже, это искажает весь пейджер. Я сделал тест, используя несколько простых данных. Ожидаемое поведение будет начинать отсчет с 1 до 7, а затем возобновлять подсчет с 1 до 7. Как это: 1,2,3,4,5,6,7,1,2,3,4,5,6,7

Но на самом деле происходит следующее: 1,2,3,4,5,6,6,7,1,2,4,5,6,1,5,5,4

Внутри шаблона

        <Pager height="100%" width="100%" @selectedIndexChange="onPagerChangedPage($event)" @loaded="onPagerLoaded($event)" for="item in profiles">
            <v-template>
              <StackLayout height="100%" width="100%" class="profile-wrapper">
                <Label :text="item.first_name"/>
              </StackLayout>
            </v-template>
          </Pager>

Данные

  data() {
    return {
          profiles: new ObservableArray( [ { first_name: "1.hello"},{ first_name: "2.brah"}, {first_name: "3.krakaka"},{first_name: "4.Blalala"},{first_name: "5.Shatash"},{first_name: "6.Dreaum"},{first_name: "7.Breauhjm"} ]),
      }
  }

Методы

    onPagerChangedPage(event) {
      let profileCount = event + 1;
      if (this.profiles.length === profileCount) {
        this.getProfiles();
      }
    },
    getProfiles() {
      let newProfiles = [{first_name: "1.hello"},{first_name: "2.brah"}, {first_name: "3.krakaka"},{first_name: "4.Blalala"},{first_name: "5.Shatash"},{first_name: "6.Dreaum"},{first_name: "7.Breauhjm"}];
      newProfiles.forEach(profile => {
        this.profiles.push(profile);
      });
    },

РЕДАКТИРОВАТЬ: пробовал несколько новых методов

    onLoadMoreItems(event) {
      let profileCount = this.profiles.length + 1;
      this.profiles.push({first_name: profileCount + ": random"});
    },
    onPagerChangedPage(event) {
      console.log("Current page name:" + this.profiles.getItem(event).first_name);
      let profileCount = event + 1;
      console.log(profileCount + "|" + this.profiles.length);
    },

Pager does not seem to correctly fill in the new pages

1 Ответ

0 голосов
/ 18 октября 2019

Это можно исправить с помощью ObservableArray, он лучше обрабатывается внутри, поскольку он генерирует события изменения данных, если вам интересно, что он имеет примерно такое же количество методов, что и обычный массив .... import {ObservableArray} from 'tns-core-modules/data/observable-array'

...