我正在使用带有Angular 2的离子2开发移动应用程序。
我有一个离子列表填充的离子项目。如果需要,我希望这些离子项能够在离子网站上以here的形式被删除。
然而,在离子2 中已经发生了很多变化,因为第一个版本以及一个按钮的上述样式打开所有离子项是不可能的,因为 show-delete 和 show-reorder 不再受支持。唯一可用的选项是将离子项目滑动作为离子项,这使我们能够一次滑动一个项目以显示删除按钮。
这不是我想要的。我想要一个同时打开所有离子项的按钮。
在花了一些时间之后,我想出了一个有效的解决方案,并设法使用离子2实现了预期的结果,我将与你分享。
这是我的解决方案:
在.html文件中:
<ion-header>
<ion-navbar>
<ion-buttons start (click)="manageSlide()">
<button>
<ion-icon name="ios-remove"></ion-icon>
</button>
</ion-buttons>
<ion-title>PageName</ion-title>
</ion-navbar>
</ion-header>
和列表:
<ion-list #list1>
<ion-item-sliding #slidingItem *ngFor="let contact of contacts | sortOrder">
<button #item ion-item>
<p>{{ item.details }}</p>
<ion-icon id="listIcon" name="arrow-forward" item-right></ion-icon>
</button>
<ion-item-options side="left">
<button danger (click)="doConfirm(contact, slidingItem)">
<ion-icon name="ios-remove-circle-outline"></ion-icon>
Remove
</button>
</ion-item-options>
</ion-item-sliding>
</ion-list>
在 .ts 文件中,首先执行导入:
import { ViewChild } from '@angular/core';
import { Item } from 'ionic-angular';
import { ItemSliding, List } from 'ionic-angular';
然后通过声明ViewChild来引用html元素:
@ViewChild(List) list: List;
最后添加你的类来处理工作:
public manageSlide() {
//loop through the list by the number retreived of the number of ion-item-sliding in the list
for (let i = 0; i < this.list.getElementRef().nativeElement.children.length; i++) {
// retreive the current ion-item-sliding
let itemSlide = this.list.getElementRef().nativeElement.children[i].$ionComponent;
// retreive the button to slide within the ion-item-sliding
let item = itemSlide.item;
// retreive the icon
let ic = item._elementRef.nativeElement.children[0].children[1];
if (this.deleteOpened) {
this.closeSlide(itemSlide);
} else {
this.openSlide(itemSlide, item, ic);
}
}
if (this.deleteOpened) {
this.deleteOpened = false;
} else {
this.deleteOpened = true;
}
}
然后是开场课:
private openSlide(itemSlide: ItemSliding, item: Item, inIcon) {
itemSlide.setCssClass("active-sliding", true);
itemSlide.setCssClass("active-slide", true);
itemSlide.setCssClass("active-options-left", true);
item.setCssStyle("transform", "translate3d(72px, 0px, 0px)")
}
结束课程:
private closeSlide(itemSlide: ItemSliding) {
itemSlide.close();
itemSlide.setCssClass("active-sliding", false);
itemSlide.setCssClass("active-slide", false);
itemSlide.setCssClass("active-options-left", false);
}
我希望它会帮助你们。
享受和良好的编码...