【问题标题】:Ionic 2 Slides LOCK离子 2 幻灯片 LOCK
【发布时间】:2018-02-20 18:00:10
【问题描述】:

我想锁定滑动功能(通过滑动屏幕)它应该只在我单击按钮时才起作用。

因为我对打字稿很陌生,所以我无法解释我应该如何让它工作。我在ionic page 上找到了一些文档。

"lockSwipes(shouldLockSwipes)" 我认为这是我需要的代码,但我不知道如何将它包含到我的 IonicApp 中。

HTML

<ion-slide>
  <ion-item>
    <img src="img/question.png (click)="goToSlide1()">
  </ion-item>
</ion-slide>

<ion-slide>
  <ion-item>
    <img src="img/clue.png (click)="goToSlide2()">
  </ion-item>
</ion-slide>

<ion-slide>
  <ion-item>
    <img src="img/answer.png (click)="Finish()">
  </ion-item>
</ion-slide>

TS

        import {Component} from '@angular/core';
        import {NavController} from 'ionic-angular';
        import {Finish} from '../finish/finish';
        import { Slides } from 'ionic-angular';
        import { ViewChild } from '@angular/core';


        @Component({
            templateUrl: 'build/pages/slider/slider.html'
        })
        export class Slider {
            @ViewChild(Slides) slides: Slides;
            value = '';
            changeText(value: string) { this.value = value; }
            constructor(private navController: NavController) {

            goToSlide1() {
                this.slides.slideTo(1, 500);
            }
            goToSlide2() {
                this.slides.slideTo(2, 500);
            }
            goToFinish() {
                this.navController.setRoot(Finish);
            }
    }
}

希望有人能帮帮我!谢谢。

【问题讨论】:

    标签: angular typescript ionic-framework ionic2 slide


    【解决方案1】:

    我正在使用 Ionic 版本 3,我做了类似的事情

    在 HTML 中

    <ion-slides #mySlider> 
      <ion-slide class="swiper-no-swiping">Content 1 </ion-slide>
      <ion-slide class="swiper-no-swiping">Content 2 </ion-slide>
    </ion-slides>
    

    在 TS 文件中

    @ViewChild('mySlider') mySlider: Slides;
    
    ionViewDidLoad() {
      this.mySlider.lockSwipes(true);
    }
    

    请注意:在 html 中需要为每张幻灯片添加“swiper-no-swiping”,这将禁用交换

    【讨论】:

      【解决方案2】:

      让我们从头开始。

      首先你的 HTML 应该是这样的:

      <ion-slides>
          <ion-slide>
          <ion-item>
              <img src="img/question.png (click)="goToSlide1()">
          </ion-item>
          </ion-slide>
      
          <ion-slide>
          <ion-item>
              <img src="img/clue.png (click)="goToSlide2()">
          </ion-item>
          </ion-slide>
      
          <ion-slide>
          <ion-item>
              <img src="img/answer.png (click)="Finish()">
          </ion-item>
          </ion-slide>
      </ion-slides>
      

      然后在你的 TS 文件中你应该使用 ngAfterViewInit 钩子,因为 ViewChild 组件将在这里而不是之前准备好。

      所以你的 TS 应该是这样的:

      import {Component} from '@angular/core';
      import {NavController} from 'ionic-angular';
      import {Finish} from '../finish/finish';
      import { Slides } from 'ionic-angular';
      import { ViewChild } from '@angular/core';
      
      
      @Component({
          templateUrl: 'build/pages/slider/slider.html'
      })
      export class Slider {
          @ViewChild(Slides) slides: Slides;
          value = '';
          changeText(value: string) { this.value = value; }
      
          constructor(private navController: NavController) {
          }
      
          ngAfterViewInit() {
              // child is set
              this.slides.lockSwipes(true);
          }
      
          goToSlide1() {
              this.slides.slideTo(1, 500);
          }
      
          goToSlide2() {
              this.slides.slideTo(2, 500);
          }
      
          goToFinish() {
              this.navController.setRoot(Finish);
          }    
      }
      

      查看angular 2 hooks

      这样就行了,编码愉快。

      【讨论】:

      • 如果我使用 ngAfterViewInit() { this.slides.lockSwipes(true); } Visual Studio 给我一个错误 -> 属性 lockSwipes 不存在类型幻灯片。
      • 这可能是因为 Visual Studios 没有 ionic 的最后一个类型版本,如果在运行时可以使用 (&lt;any&gt;this.slides).lockSwipes(true),请尝试使用 VS 的类型问题。
      • 现在在 Visual Studio 中工作,但现在出现错误。 -TypeError:this.slides.lockSwipes 不是函数 知道吗?如果我找到一个,我会在文档中查看解决方案。
      • 您的软件包中有最新的 Ionic 版本吗?这似乎是个问题。
      • 我正在使用 ionic 版本 2.2.3,因为新版本正在破坏我的应用程序。我会尝试更新,但是不能用那个版本锁定刷卡吗?
      【解决方案3】:

      将此添加到 ionViewDidLoad 函数中

      ionViewDidLoad() {
          this.slides.lockSwipes(true);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-17
        • 2015-05-12
        • 2018-01-12
        • 2019-11-18
        • 2018-12-09
        • 2017-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多