当我尝试从数据模型中移除项目的动画时,项目将被删除,但显然因为我使用的动画将项目的尺寸设置为0,所以添加到数据模型的下一个项目不可见。要查看它,我必须重新加载整个数据模型,或关闭并重新打开我的应用程序。如果我不做动画,项目将被删除并正确添加,只是没有我想要实现的效果。我的示例代码如下:
ListView {
dataModel: GroupDataModel {
id: noteDataModel
}
listItemComponents: [
ListItemComponent {
type: "item"
StandardListItem {
id: noteItem
title: ListItemData.noteTitle
description: ListItemData.noteText
animations: [
ScaleTransition {
id: deleteAnimation
toY: 0
toX: 0
duration: 500
onEnded: {
noteItem.ListItem.view.dataModel.remove(noteItem.ListItem.view.dataModel.data(noteItem.ListItem.indexPath));
}
}
]
contextActions: [
ActionSet {
DeleteActionItem {
onTriggered: {
deleteAnimation.play();
}
}
}
]
}
答案 0 :(得分:3)
问题出现的原因是Cascades框架有时会重用对象以获得更好的性能。从数据模型中删除项目并将其维度设置为零时,该对象将在内存中保留一段时间,维度属性设置为0.您添加的下一个项目将重用已删除的项目对象,但具有维度0,所以它不会被看见。
要解决此问题,请更改动画的onEnded事件,并在删除后将项目重新缩放回尺寸1.0:
onEnded: {
noteItem.ListItem.view.dataModel.remove(noteItem.ListItem.view.dataModel.data(noteItem.ListItem.indexPath));
noteItem.scaleX = 1.0;
noteItem.scaleY = 1.0;
}