我目前正在尝试在我的Ember.js应用中实现ember-drag-sort嵌套列表。
有没有办法在dragEnd动作中确定该项目的“子列表”已被删除? (例如,班级名称,身份证等)
在我的场景中,我正在对可以彼此属于的ember数据记录进行排序(即嵌套的“树”结构)。当我将一个嵌套记录“拖入”另一个(使拖动的记录成为第二个记录的子记录)时,我需要更新ember-data中的父属性。我的问题是,你如何将第二条记录(新父母)的一些id传递给dragEnd动作?
这甚至可能吗?
编辑:
换句话说,我希望能够确定将项目放入哪个列表。
答案 0 :(得分:0)
targetList
指的是组件拖动侧的数组。要将父级推送到孩子旁边的目标列表,您可以查看此twiddle。
答案 1 :(得分:0)
为简化列表的标识,{r {3}}(additional arguments,SO)已实现了GitHub功能。
您可以将某种列表标识符传递到列表的additionalArgs
参数中。在此示例中,我传递了拥有列表的parent
条记录:
{{#each parents as |parent|}}
{{#drag-sort-list
items = parent.children
additionalArgs = (hash parent=parent)
dragEndAction = (action 'dragEnd')
as |child|
}}
{{child.name}}
{{/drag-sort-list}}
{{/each}}
在dragEnd
操作中,您可以访问拥有源列表和目标列表的父记录:
dragEndAction({ sourceList, sourceIndex, sourceArgs, targetList, targetIndex, targetArgs }) {
if (sourceModel === targetModel && sourceIndex === targetIndex) return;
const item = sourceList.objectAt(sourceIndex);
sourceList.removeAt(sourceIndex);
targetList.insertAt(targetIndex, item);
// Access the parent via `sourceArgs` and `targetArgs`
sourceArgs.parent.save();
targetArgs.parent.save();
}