angular - 离子滑块上的条件导航
问题描述
当我正在开发 PWA 并希望在桌面上包含鼠标交互时,我已将 Ionic 滑块配置为具有导航按钮。我想运行一些条件来在滑块开始时隐藏 PREV 按钮,并在最后一张幻灯片上隐藏 NEXT 按钮。我在Hide 中查看了解决方案,并在 ionic 2 中单击时显示,并为此编写了一些代码。
我的问题是首次呈现 Ionic 滑块时 PREV 按钮不会自动隐藏。我无法让它为我工作,因为我已经使用 slideChanged() 方法启动了检查,并且我不知道如何在启动时隐藏 PREV 按钮(在与滑块交互之前)。
这是我的代码:
TS 文件:
slideChanged() {
if (this.slides.isEnd()) {
this.hideNext = !this.hideNext;
}
else if (this.slides.isBeginning()) {
this.hidePrev = !this.hidePrev;
}
else {
console.log("slide changed");
this.hideNext = true;
this.hidePrev = true;
}
}
HTML 模板
<ion-icon *ngIf="hidePrev" name="ios-arrow-back" float-left class="slideNav prevSlide" (click)="prevSlide()"></ion-icon>
<ion-icon *ngIf="hideNext" name="ios-arrow-forward" float-right class="slideNav nextSlide" (click)="nextSlide()"></ion-icon>
<ion-slides (ionSlideDidChange)="slideChanged()" pager #imageSlides>
<ion-slide *ngIf="data.video">
<video controls poster="../../assets/imgs/{{category | slug}}/{{data.video}}-poster.jpg">
<source src="../../assets/imgs/{{category | slug}}/{{data.video}}.mp4" type="video/mp4">
</video>
</ion-slide>
<ion-slide *ngFor="let image of data.featured_image">
<img src="../../assets/imgs/{{category | slug}}/{{image}}.jpg" class="featured-image"/>
</ion-slide>
</ion-slides>
解决方案
您可以使用ionSlideReachEnd
和ionSlideReachStart
事件:
TS 文件
slideChanged() {
if (this.slides.isEnd()) {
this.hideNext = !this.hideNext;
}
else if (this.slides.isBeginning()) {
this.hidePrev = !this.hidePrev;
}
else {
console.log("slide changed");
this.hideNext = true;
this.hidePrev = true;
}
}
reachedStart() {
this.hidePrev = true;
}
reachedEnd() {
this.hideNext = true;
}
HTML 模板
<ion-icon *ngIf="hidePrev" name="ios-arrow-back" float-left class="slideNav prevSlide" (click)="prevSlide()"></ion-icon>
<ion-icon *ngIf="hideNext" name="ios-arrow-forward" float-right class="slideNav nextSlide" (click)="nextSlide()"></ion-icon>
<ion-slides (ionSlideDidChange)="slideChanged()" (ionSlideReachEnd)="reachedEnd()" (ionSlideReachStart)="reachedStart()" pager #imageSlides>
<ion-slide *ngIf="data.video">
<video controls poster="../../assets/imgs/{{category | slug}}/{{data.video}}-poster.jpg">
<source src="../../assets/imgs/{{category | slug}}/{{data.video}}.mp4" type="video/mp4">
</video>
</ion-slide>
<ion-slide *ngFor="let image of data.featured_image">
<img src="../../assets/imgs/{{category | slug}}/{{image}}.jpg" class="featured-image"/>
</ion-slide>
</ion-slides>
推荐阅读
- c# - 如何在动态 Sendgrid 事务模板的模板数据中允许 html?
- php - 将 ajax 调用转换为 fetch api 调用并将信息拉入 php 函数
- c# - 一种获得深层价值的安全方法
- ruby-on-rails - 由于存在资产,搜索机器人无法索引 rails heroku
- android - 未发送请求代码的片段中的 UCrop
- unity3d - UnityTest 没有在 MonoBehaviour 上调用 Update() 函数
- azure - 无法使用 Azure Function App 创建 API
- javascript - 用小写字母和连字符替换整个字符串中的大写字母
- visual-studio - 我可以将 Visual Studio 2019 解决方案的测试默认运行设置更新为 x64 吗?
- clojure - 如何打印向量中的元素