Ion-item-option нужно нажать дважды - PullRequest
2 голосов
/ 08 октября 2019

У меня есть список ионов со скользящими элементами в нем, и я создаю их с помощью цикла for. Вы можете нажать на сам элемент, и маршрутизатор перейдет на другую страницу. Когда вы перемещаете элемент, появляется кнопка. и эту кнопку нужно дважды щелкнуть (в 90% случаев), чтобы выстрелить.

Я уже пробовал:

(щелчок) в тегах <ion-item> и <ion-avatar>. То же самое поведение :( Я позволяю пользователю создать элемент, и он добавляется в список. Этот список хранится в ионном хранилище с помощью this.storage.set ('list'); и список ионов создается из этого списка вышепока все хорошо, это не вызывает никаких проблем. и количество элементов списка также не влияет на поведение. ion-list находится в <div *ngIf = "loaded">, а загруженный устанавливается в false позже в deleteHorse(), так что это должноЭто ни на что не влияет. Когда я нажимаю на сам ионный элемент, он ведет себя правильно. Может ли быть так, что элемент покрывает параметры ионного элемента, и, таким образом, второй щелчок реализуется как нажатие на фактическую кнопку, а не наitem? Я попытался добавить жестко закодированный элемент с опциями скольжения - тоже самое ...

и сообщил об этом ионному на github

<div *ngIf="loaded">
<ion-list *ngFor="let item of items; let i = index" routerDirection="forward">
      <ion-item-sliding #slidingItem (click)="dosomething()">
        <ion-item >
        <ion-avatar>
          <img [src]=items[0].imgUrl>
        </ion-avatar>
        <h2>{{item[0].name}}</h2>
      </ion-item>
      <ion-item-options side="end">
          <ion-item-option (click)="showSureAlert(i, slidingItem)">
            <ion-button class="slideButton" >
              <ion-icon name="trash"></ion-icon>
            </ion-button>
          </ion-item-option>
        </ion-item-options>
      </ion-item-sliding>
    </ion-list>
</div>
async showSureAlert(index, item) {
    console.log('clicked');
    const text: any = [];
    const alert = await this.alertCtrl.create({
      header: text.header = this.translateService.instant('delete'),
      message: text.message = this.translateService.instant('Warning.deleteHorse') + ' ' + this.horses[index][0].name + '?',
      buttons: [
        {
          text: text.next = this.translateService.instant('no'),
          handler: () => {

          }
        },
        {
          text: text.next = this.translateService.instant('yes'),
          handler: () => {
            // delete horsename
            this.deleteHorse(index);
          }
        }
      ],
      backdropDismiss: false
    });
    console.log('alert created');
    await alert.present();
    item.close();
  }


На console.log() это также влияет.

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

редактировать

Я скопировалКод от ionicframework.com -> тот же результат

И адаптировал мой код к этому примеру. Изменение положения пунктов-опций (от конца к началу) сделало его немного лучше (70% времени, когда нужно дважды щелкнуть по нему)

посмотрите здесь: пример на github

1 Ответ

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

Я нашел улучшение. но это не делает свою работу надежной. Первые 3-4 раза он работает всего одним кликом. после этого мне нужно дважды щелкнуть.

, и это выглядит ужасно чертовски: D

Кнопки в опции ионного элемента вызывают проблему. поэтому сначала у меня было:

 <ion-item-options side="end">
          <ion-item-option (click)="showSureAlert(i, slidingItem)">
            <ion-button class="slideButton" >
              <ion-icon name="trash"></ion-icon>
            </ion-button>
          </ion-item-option>
        </ion-item-options>

, а теперь:

<ion-item-options side="end">
          <ion-item-option (click)="showSureAlert(i, slidingItem)">
              <ion-icon name="trash"></ion-icon>
          </ion-item-option>
        </ion-item-options>

все еще нет решения, но лучше ...

...