2017-02-09 1 views
1

Я пытаюсь снять «трюк» в ionic2 следующим образом: - У меня есть один слайд, установленный в цикл. - Когда слайд прокручивается, я увеличиваю или уменьшаю переменную - эта переменная приведет к отображению разных данных на слайде.ion-slides looping trick - не обновляется

Таким образом, я могу получить полный пользовательский интерфейс компонента слайдов без жесткого кодирования или предварительной загрузки всех других слайдов. Например, скажем, что вы просматриваете данные днем, я хочу, чтобы они могли скользить назад и вперед, чтобы посмотреть данные из предыдущих дней. Учитывая это изменение, я просто перезагружу данные соответствующих дней.

Это ALMOST работает, за исключением того, что слайдер, похоже, не обновляется должным образом при циклировании. посмотри этого http://plnkr.co/edit/VlxrNO7I6sqLGHsLdB9R?p=preview

<ion-slides loop="true" (ionSlidePrevEnd)="slideChanged(-1)" (ionSlideNextEnd)="slideChanged(1)"> 
    <ion-slide>Slide{{newval}} 
    Test 
    </ion-slide> 
</ion-slides> 
</ion-content> 

контроллер

export class HomePage { 

    appName = 'Ionic App'; 
    newval: number = 0; 
    constructor(public navController: NavController) { } 

    slideChanged(step: number) { 
     this.newval = this.newval + step; 
    } 
} 

Если вы проводите вперед и назад изменение текста оленьей кожи. Он должен увеличиваться или уменьшаться, например, Слайд 1, Слайд 2 и т. Д. НО сделать несколько щелчков, а затем вместо прокрутки просто нажмите на слайд и немного передвиньте его, и ТОГДА ярлык обновится, чтобы дать вам правильное значение! Его почти как потому, что я петлю - все это отображается как исходное значение слайда, а не обновленное значение, пока я не щелкнул где-нибудь на слайде, чтобы он обновился.

Итак, нижняя строка Я предполагаю, что это ошибка? Можно ли каким-либо образом запустить это «обновление» программным путем?

Благодаря

+0

Я хотел бы предложить глядя с помощью 'NgZone'. Я использую это для любого обновления, когда у меня есть изменение в отображаемом содержимом. Тем не менее, я использую более старую версию Ionic 2, которая находится в JS, поэтому я не уверен в синтаксисе для TS. Так что я не могу дать вам полный исходный код – Huiting

+0

Однако я буду думать, что у вас уже есть некоторые данные, которые вы хотите отобразить. Обычно ngFor для обработки данных, отлично подходит для меня, без необходимости обновлять – Huiting

+0

Да, я использую ngFor для коллекции. Он работает только тогда, когда я нажимаю на слайд и немного перемещаю его ... только тогда он обновляется, чтобы отображать правильные данные. – Gotts

ответ

-1

Привет изменить свой код для home.page.html на:

<ion-slides loop="true" (ionSlidePrevEnd)="slideChanged(-1)" (ionSlideNextEnd)="slideChanged(1)"> 
    <ion-slide *ngFor="let item of items">Slide {{newval}} 
     <ion-list> 
     {{item}} 
     </ion-list> 
    </ion-slide> 
</ion-slides> 

Я испытал его в plunker и содержание будет меняться при перемещении. У ngFor для каждыйion-slide вместо в ion-slide

+1

Конечно, это будет работать, потому что это создает новый ионный слайд для каждого элемента, поэтому его предварительно загруженный и работающий как ион-слайд нормально работает, если вы предварительно определили все слайды. Все мое дело в том, что я пытаюсь уйти с 1 слайдом, чтобы получить опыт пользовательского интерфейса и просто обновить данные на слайде, когда он скользит. И это не освежает! – Gotts