5

我有一个带有滑动项目的离子列表,并使用 for 循环创建这些项目。您可以单击项目本身,路由器导航到另一个页面。滑动项目时,会显示一个按钮。并且这个 Button 需要被点击两次(在 90% 的时间)才能触发。

我已经尝试过:

(单击)<ion-item><ion-avatar>标签。相同的行为:(我让用户创建一个项目并将其添加到列表中。这个列表存储在离子存储中 this.storage.set('list'); 并且离子列表是从上面的这个列表创建的.到目前为止一切都很好,这不会造成任何问题。并且列表项的数量也不会影响行为。离子列表在a中<div *ngIf = "loaded">,并且稍后加载设置为false,deleteHorse()因此这不会影响任何事情。当我单击 ion-item 本身,它的行为正确。是否该项目覆盖了 ion-item-options,因此,第二次单击实现为单击实际按钮而不是项目?我尝试添加带有滑动选项的硬编码项目-同样的事情......

并在github上报告给 ionic

<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上的示例

4

1 回答 1

1

我发现了一个改进。但这并不可靠。前 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>

仍然没有解决方案,但更好...

编辑:起初使用 Ionic 4,ShadowDOM 存在这个奇怪的问题,我必须用“host {}”包装我的整个 CSS 文件才能正常工作。我删除了这个并且它工作正常。愚蠢的东西。

于 2019-10-08T08:18:05.827 回答