【发布时间】:2020-06-17 19:49:07
【问题描述】:
简介
我有一个待办事项列表,它在 cdkDropList 内的元素上利用 Angular Material 的 cdkDrag 指令。将项目标记为“待办事项”或“已完成”,反之亦然。
问题
用户交互中存在一定程度的细节,即页面刷新,这会导致项目不一定按照它们被拖动的顺序。
以这个例子为例,其中一个用户被分配了 3 个任务:吃早餐,吃午餐,吃晚餐:
用户不喜欢该优先级,并决定改为按此顺序处理他/她的饮食任务。拖放交互发生,待办事项列表最终确定为:
在页面刷新时,这就是问题所在。它会回到原来的状态:
吃早餐,吃午餐,吃晚餐
什么时候应该是:
吃晚餐,吃早餐,吃午餐
这个观察结果也适用于标记为完成的项目。
我需要确认此交互的当前状态缺少什么。请注意,此实现基于How To Build an App With Drag and Drop With Angular
感谢您的宝贵时间。
【问题讨论】:
-
您是否将订单保存在某处,因为刷新页面会重置状态,一切都会丢失。
-
不,只是对假后端的 CRUD 操作以更新项目。如果我要“保存订单”,您有什么想法来启动保存?
-
要么有一个保存按钮,要么有一个由 drop 事件触发的保存,如果你想确保用户即使刷新也能保持他所做的事情,而不是我建议在每次 drop 时保存。使用更新的列表发送保存操作(应该保持订单),并将订单属性添加到您的后端。然后在启动时(组件的 OnInit)调度一个初始化数据的操作(获取待办事项列表和您需要的所有其他内容)
标签: javascript angular angular-material angular-cdk angular-cdk-drag-drop