在ember-drag-sort

时间:2017-11-13 05:28:33

标签: ember.js drag-and-drop ember-drag-sort

我目前正在尝试在我的Ember.js应用中实现ember-drag-sort嵌套列表。

有没有办法在dragEnd动作中确定该项目的“子列表”已被删除? (例如,班级名称,身份证等)

在我的场景中,我正在对可以彼此属于的ember数据记录进行排序(即嵌套的“树”结构)。当我将一个嵌套记录“拖入”另一个(使拖动的记录成为第二个记录的子记录)时,我需要更新ember-data中的父属性。我的问题是,你如何将第二条记录(新父母)的一些id传递给dragEnd动作?

这甚至可能吗?

编辑:

换句话说,我希望能够确定将项目放入哪个列表。

2 个答案:

答案 0 :(得分:0)

targetList指的是组件拖动侧的数组。要将父级推送到孩子旁边的目标列表,您可以查看此twiddle

答案 1 :(得分:0)

为简化列表的标识,{r {3}}(additional argumentsSO)已实现了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();
}