离子信息
从终端/ cmd提示符运行ionic info
,然后将输出粘贴到下面。
Ionic:
ionic (Ionic CLI) : 4.1.2 (C:\Users\fkrishna\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : @ionic/angular 4.0.0-beta.7
@angular-devkit/core : 0.7.5
@angular-devkit/schematics : 0.7.5
@angular/cli : 6.1.5
@ionic/ng-toolkit : 1.0.8
@ionic/schematics-angular : 1.0.6
System:
NodeJS : v8.11.3 (C:\Program Files\nodejs\node.exe)
npm : 5.6.0
OS : Windows 10
描述错误
我创建了一个由3个元素组成的数组,并使用了
重现步骤
重现行为的步骤:
相关代码
<ion-content>
<ion-list>
<ion-item-sliding *ngFor="let n of numbers; index as i">
<ion-item>
{{ n }}
</ion-item>
<ion-item-options>
<ion-item-option " (click)="remove(i)">Delete</ion-item-option>
</ion-item-options>
</ion-item-sliding>
</ion-list>
numbers = ['1','2','3'];
constructor() {}
remove(i) {
this.numbers.splice(i, 1);
}
预期行为
假定即使删除了元素,滑动也能正确地用于每个项目
附加语境
列出与您的问题有关的任何其他信息。 堆栈跟踪,相关问题,如何修复的建议,堆栈溢出链接,论坛链接,屏幕截图,操作系统(如果适用)等。
我有同样的问题。
顺便说一句,滑动项在删除后不起作用,需要重新加载应用
@ quynh-ng我有同样的问题,我不得不降级到beta.5 :(
有趣的是,也碰到了这个问题,可以确认,如果我对滑动列表中的项目进行操作删除,剩下的项目将无法再滑动
ps:在beta.8中也是如此
@ quynh-ng一样-_-
也有相同的问题,其中包含动态元素列表,使用
深入研究后,我注意到没有刷新元素就可以正常工作,查看文档可以找到一种方法来关闭项目或列表上的所有滑动项目。 使用此解决了问题。
#dynamicList
@ViewChild('dynamicList') dynamicList;
访问该列表<ion-item-option>
,在删除记录之前触发dynamicList.closeSlidingItems()
。希望在此期间有所帮助,我是新来的有经验的人,所以希望我没有做任何愚蠢的事情。
并非所有英雄都披上斗篷,谢谢
的HTML:
<ion-list #slidingList>
<ion-item-sliding>
<ion-item-options side="end">
<ion-item-option (click)="delete()">
</ion-item-option>
</ion-item-options>
</ion-item-sliding>
</ion-list>
ts:
import {List} from '@ionic/angular';
@ViewChild('slidingList') slidingList: List;
async delete() {
// something
await this.slidingList.closeSlidingItems();
}
@peterpeterparker它工作正常,但这是解决方案还是解决方法?
@ Anthony2539可能两者都有点:stuck_out_tongue_winking_eye:
我不知道这是功能请求还是错误
我认为最近做出了一些有关滑动的承诺,所以问题可能/将会消失
无论如何,假设解决方法可行,并且我无法武装我的应用
我会说这更多是一个错误,因为我不得不降级才能使我的e2e测试再次通过
这个问题显然是一个错误。 删除项目不需要在删除之前将其关闭,这很有趣。
我发现另一种解决方法是将对ItemSliding的引用传递给delete方法,然后在删除列表项之前关闭该项:
HTML:
<ion-list>
<ion-item-sliding *ngFor="let item of items" #slidingItem>
<ion-item>>
{{item.text}}
</ion-item>
<ion-item-options (ionSwipe)="deleteItem(slidingItem, item)">
<ion-button color="danger" (click)="deleteItem(slidingItem, item)">
<ion-icon name="trash"></ion-icon>
Delete
</ion-button>
</ion-item-options>
</ion-item-sliding>
</ion-list>
TS:
async deleteItem(slidingItem: ItemSliding, item: Item) {
slidingItem.close(); // <-- this is the important bit!
await this.itemService.deleteItem(item);
}
@ mimacom-klier非常感谢您完美地解决了我的问题。
不适合我!
无论有没有调用close
或closeSlidingItems
方法,解决方法对我都不起作用。
我注意到的是:在我隐藏然后再次显示项目之后,滑动不会_似乎起作用,但是如果尝试滑动项目然后单击“应该”在何处,则实际上可以触发按钮动作。
这是一个Stackblitz示例。
在Stackblitz上,我使用的是@ionic/[email protected]
,但是本地计算机上的@ionic/[email protected]
也存在问题。
@bockoblur :我检查了您的Stackblitz示例,并对其进行了一些测试。 如果您实际上从列表中删除了项目,则解决方法似乎正常。 如果仅隐藏它们,然后再次显示它们,则行为与您所描述的完全相同。 这似乎是转换的问题:转换未正确应用于列表项元素。 也许ItemSliding组件仍使用旧的DOM引用来翻译项目。 您可以在这里找到我的修改示例: https :
感谢您查看这个。 可以。
尽管如此,这仍然是离子团队需要解决的问题。
@ mimacom-klier解决方法适用于最新的Ionic(4.5.0)。
编辑:使用@jcollings解决方案还可以用于添加和/或更新项目,这对我造成了同样的问题。 谢谢!
此解决方案适用于我使用以下方法:
离子CLI:4.5.0
离子框架:@ ionic / angular 4.0.0-beta.17
但是,我认为这仍然是应该解决的问题,我怀疑任何开发人员都会期望这种行为。
我也是。 解决方法shmorkaround。 最主要的是它使我摆脱了困境,对此我非常感谢
Wauw ..整天都在忙着这个问题(更新列表项后,幻灯片也无法正常工作)。 现在找出原因。 谢谢@jcollings的解决方法。 希望此错误将得到解决。
你好
面临以下问题:
问题:
离子项目滑动仅适用于第一次。 当我滑动离子项目时,它停止响应,然后转到另一页并返回。
尝试了@jcollings建议的解决方法。 尝试在离开视图时关闭所有离子项目滑动,如下所示:
ionViewWillLeave() {
setTimeout(async() => {
console.log('sliding list: ', this.slidingList);
if(this.slidingList){
await this.slidingList.closeSlidingItems();
}
},1000);
}
但是没有用
我的滑块代码如下:
<ion-list #slidingList class="notifications" *ngIf="notificationCheck === 'true'">
<ion-item-sliding *ngFor="let notification of notifications; index as i;">
<ion-item lines="none" no-padding>
<ion-row>
<ion-col size="12" class="title">
{{notification.title}}
</ion-col>
<ion-col size="12" class="description">
{{notification.message}}
</ion-col>
<ion-col size="12" class="date-time">
{{notification.createdDate | date:'medium'}}
</ion-col>
<i class="left-arrow"></i>
</ion-row>
</ion-item>
<ion-item-options side="end">
<ion-item-option color="secondary" (click)="goToURL(notification.actionURL)">
<div slot="icon-only">
<i class="fa fa-edit" *ngIf="notification.actionType === 'UPDATE'"></i>
<i class="fa fa-eye" *ngIf="notification.actionType === 'VIEW'"></i>
</div>
</ion-item-option>
<ion-item-option color="danger" (click)="deleteNotifications(notification.id)">
<div slot="icon-only">
<i class="fa fa-trash"></i>
</div>
</ion-item-option>
</ion-item-options>
</ion-item-sliding>
</ion-list>
尝试使用最新的离子版本4.0.0-rc.0。 问题仍然存在。
你好
尝试解决此问题,发现在我的案例中,“离子项目滑块”无响应的罪魁祸首是,无论何时更改视图,滑动选项都不会关闭。 所以我做了以下事情,它工作得很好:
constructor(private location: Location, private router: Router) {
this.navigationSubscription = this.router.events.subscribe(async(e: any) => {
if (e instanceof NavigationStart) {
if(this.slidingList){
await this.slidingList.closeSlidingItems();
}
}
});
}
非常感谢@jcollings。
我穿了这个:
在.html中
<ion-item-sliding #slidingItem>
<ion-item-option color="danger" (click)="del(slidingItem,carte)">Supprimer</ion-item-option>
in .ts
import { IonItemSliding } from '@ionic/angular';
async del(slidingItem: IonItemSliding, carte){
await slidingItem.close();
let index = this.cartes.indexOf(carte);
if(index > -1){
this.cartes.splice(index, 1);
}
}
完美运作
非常感谢@jcollings。
可以使用4.0.0-rc.0确认问题仍然存在。
也可以确认这在4.0.0-rc.1中存在
此错误仍存在于4.0.0-rc.2中。
我在虚拟滚动中使用了离子项目滑动,因此无法使用List.closeSlidingItems()。
如果我不关闭滑动的项目并使用“后退”按钮或其他按钮离开视图,则滑动的项目下次将完全停止工作。 在这种情况下,我无法使用(click)事件,因为我打开了滑动框就离开了。 捕获(单击)事件没有变化。
另一个解决方法。 这个对我有用。
in .html
<ion-item-sliding>....</ion-item-sliding>
in .ts
import { IonItemSliding } from '@ionic/angular';
@ViewChild(IonItemSliding) itemSliding: IonItemSliding;
ionViewWillLeave() {
setTimeout(() => { this.itemSliding.closeOpened(); }, 500);
}
亲爱的白兰地,
@brandyscarney你可以看看吗? 我们正处于向v4迁移的阶段,我想听听离子团队的意见。 在我看来很重要。
太谢谢了。
诺伯特
感谢您为我加标签! 我将其添加到我们的项目委员会进行调查。
@manucorporat @mhartington @paulstelzer
谢谢这个问题! PR#17492已将其合并。 它将在下一个发行版中: 4.1.0
。 之后,如果您仍然遇到问题,请告诉我们。
谢谢你的问题! 该问题已被锁定,以防止发表与原始问题无关的评论。 如果这仍然是最新版本的Ionic的问题,请创建一个新的问题,并确保模板已完全填写。
最有用的评论
也有相同的问题,其中包含动态元素列表,使用组件,然后刷新元素会导致它直到刷新后才能删除任何其他元素。
深入研究后,我注意到没有刷新元素就可以正常工作,查看文档可以找到一种方法来关闭项目或列表上的所有滑动项目。 使用此解决了问题。
#dynamicList
@ViewChild('dynamicList') dynamicList;
访问该列表<ion-item-option>
,在删除记录之前触发dynamicList.closeSlidingItems()
。希望在此期间有所帮助,我是新来的有经验的人,所以希望我没有做任何愚蠢的事情。