如何在ionic2中管理web2应用程序中的多个滑块?

ope*_*guy 6 javascript typescript ionic2 ionic3 angular

幻灯片我有这样的HTML

<ion-slides   [pager]="false" slidesPerView="6" #slider_a>
        <ion-slide  *ngFor="let slide of  items_a " #ddd>
            <ion-card class="list-card" >
                <div class="cardInnerWrap">
                    <ion-item>
                      {{slide.gameTitle}}
                    </ion-item>
                     <img src="{{slide.gameImage}}">

                </div>
            </ion-card>
        </ion-slide>
</ion-slides>

<ion-slides   [pager]="false" slidesPerView="6" #slider_b>
        <ion-slide  *ngFor="let slide of  items_b " #ddd>
            <ion-card class="list-card" >
                <div class="cardInnerWrap">
                    <ion-item>
                      {{slide.gameTitle}}
                    </ion-item>
                     <img src="{{slide.gameImage}}">

                </div>
            </ion-card>
        </ion-slide>
</ion-slides>
Run Code Online (Sandbox Code Playgroud)

它在移动设备上工作.问题是当我在Firefox中拖动幻灯片2时(也在Chrome中),幻灯片1也被拖动了.不能单独拖动幻灯片2.如何在离子2中制作2个完全独立的滑块,可在浏览器中使用

seb*_*ras 6

更新 感谢来自Slack频道的@cookiecookson:

  1. 链接到github问题
  2. 链接到解决此问题的PR(截至2017年6月27日尚未合并)

似乎这是Ionic实施Swiper包装器时的一个错误.解决这个问题的一种方法是使用Swiper库的另一个包装器,就像这个一样.你可以在这个github仓库中找到一个演示应用程序.

最终结果将是这样的:

多个幻灯片演示Ť

首先,您需要安装它

npm install angular2-swiper --save
Run Code Online (Sandbox Code Playgroud)

然后将其导入app.module.ts文件(或您想要的模块)

import { KSSwiperModule } from 'angular2-swiper';

// ...

@NgModule({
  declarations: [...],
  imports: [KSSwiperModule, ...],
  bootstrap: [...],
  entryComponents: [..],
  providers: [...]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

然后只需在您的页面中使用它.

组件代码:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  public items_a: Array<any>;
  public items_b: Array<any>;

  public options: any;

  constructor(public navCtrl: NavController) {
    this.items_a = [
      { gameTitle: 'Title1', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title2', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title3', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title4', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title5', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title6', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title7', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title8', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title9', gameImage: 'http://via.placeholder.com/200x200' }
    ];

    this.items_b = [
      { gameTitle: 'Title10', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title11', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title12', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title13', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title14', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title15', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title16', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title17', gameImage: 'http://via.placeholder.com/200x200' },
      { gameTitle: 'Title18', gameImage: 'http://via.placeholder.com/200x200' }
    ];

    this.options = {
      slidesPerView: 3
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

视图:

<ion-header>
    <ion-navbar>
        <ion-title>
            Multiple slides
        </ion-title>
    </ion-navbar>
</ion-header>

<ion-content padding>

    <ks-swiper-container [options]="options">
        <ks-swiper-slide *ngFor="let slide of items_a">
            <ion-card class="list-card">
                <div class="cardInnerWrap">
                    <ion-item>
                        {{ slide.gameTitle }}
                    </ion-item>
                    <img src="{{ slide.gameImage }}">
                </div>
            </ion-card>
        </ks-swiper-slide>
    </ks-swiper-container>

    <ks-swiper-container [options]="options">
        <ks-swiper-slide *ngFor="let slide of items_b">
            <ion-card class="list-card">
                <div class="cardInnerWrap">
                    <ion-item>
                        {{ slide.gameTitle }}
                    </ion-item>
                    <img src="{{ slide.gameImage }}">
                </div>
            </ion-card>
        </ks-swiper-slide>
    </ks-swiper-container>

</ion-content>
Run Code Online (Sandbox Code Playgroud)