Ionic 2 / 3 - 如何在屏幕较宽时查看 2 张幻灯片?

Ionic 2 / 3 - How to view 2 slides when screen is wide?

我搜索了一些可以让我在设备屏幕较小的情况下查看 1 个离子幻灯片的东西,否则它应该是 2 个离子幻灯片,但我找不到解决方案

例如,我使用此代码查看了 1 张幻灯片和其他幻灯片的一部分

<ion-slides slidesPerView="1.125">
  <ion-slide>
    <h1>Slide 1</h1>
  </ion-slide>
  <ion-slide>
    <h1>Slide 2</h1>
  </ion-slide>
</ion-slides>

这个其他代码允许我查看 2 张幻灯片

<ion-slides slidesPerView="2.125">
  <ion-slide>
    <h1>Slide 1</h1>
  </ion-slide>
  <ion-slide>
    <h1>Slide 2</h1>
  </ion-slide>
</ion-slides>

我的问题可以在 ionic & How 中制作如下图示例?

您必须以编程方式进行。最好对所有情况都这样做:

  • 调整大小
  • 方向改变

因此您可能有设备 class,它将能够检查设备类型, 使用 UA 正则表达式(也许不需要,但我在 github 上看到了很好的例子)。

interface DeviceData {
  widht:number;
  type:any;
  orientation:any;
}

class Device{

  public onRezise = new EventEmitter();
  public onOrientationChange = new EventEmitter();

  constructor(){

    //add listeners for resize and orientation change
  }

  public getWidth(){

  }

  public getOrientation(){

  }

  public getDeviceType(){

  }
}

然后你可以在你的组件中使用数据,也可以监听 window 中的变化。 并具有动态数量的幻灯片。

   class Component {
      constructor(private _device:Device){

      }

      ngOnInit(){
        this._device.onOrientationChange.subscribe((v:DeviceData) => this.setNumberOfSlides(v));
        this._device.onRezise.subscribe((v:DeviceData) => this.setNumberOfSlides(v));
      }

      private setNumberOfSlides(data:DeviceData){
        this._numberOfSlides = data.widht/slideWidth;
      }
    }

经过努力和测试,我找到了我认为最好的解决方案..

这是我的解决方案

首先我写了一个函数来检查屏幕宽度 return 1.125 或 2.125

checkScreen(){
    if(window.innerWidth>=960){
        return 2.125;
    }else{
        return 1.125;
    }
}

然后我在 HTML

<ion-content (ionChange)="checkScreen()">
    <ion-slides [slidesPerView]="checkScreen()">
        <ion-slide>
            <h1>Slide 1</h1>
        </ion-slide>
        <ion-slide>
            <h1>Slide 2</h1>
        </ion-slide>
    </ion-slides>
</ion-content>

现在幻灯片会根据屏幕大小以不同的形状显示