javascript - Vue.可拖动 : How to "drag an item onto another item" instead of adding/removing

标签 javascript vue.js draggable sortablejs

使用 https://github.com/SortableJS/Vue.Draggable

我有一个关于如何实现将文件拖入文件夹的经典示例的问题。 我看到 @change 事件获取有关被拖动项目的数据,但不是有关其被拖动到的项目的数据。 关于如何实现这一目标的任何想法?

这是一个或多或少的示例,但显然我希望能够重新分配 onFoldersChange 中的 file.folder_name - 以某种方式。 https://jsfiddle.net/u5nb48cs/2/

谢谢!

最佳答案

如果您希望文件夹包含文件,则每个文件夹都需要能够容纳文件并且是可拖动的目的地。

var vm = new Vue({
  el: "#main",
  data: {
    folders: [{
      name: "Folder1",
      contents: []
    }, {
      name: "Folder2",
      contents: []
    }, {
      name: "Folder3",
      contents: []
    }],
    files: [{
      name: "foo",
      folder_name: "Folder1"
    }, {
      name: "bar",
      folder_name: 'Folder2'
    }]
  },
  methods: {
    onFoldersChange() {
      console.log(arguments);
    }
  }
});
.dragArea {
  min-height: 10px;
}
<script src="//cdn.jsdelivr.net/sortable/1.4.2/Sortable.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<script src="//cdn.rawgit.com/David-Desmaisons/Vue.Draggable/master/dist/vuedraggable.min.js"></script>
<div id="main">
  <h1>Vue Draggable</h1>
  <div class="drag">
    <h2>Folders</h2>
    <div v-for="(element, index) in folders" :key="index">{{element.name}}
      <draggable v-model="element.contents" class="dragArea" :options="{group:{ put:'files'}}" @change="onFoldersChange">
        <div v-for="item in element.contents">
          {{item.name}}
        </div>
      </draggable>
    </div>

    <h2>Files</h2>
    <draggable v-model="files" class="dragArea" :options="{group:{ name:'files'}}">
      <div v-for="(element, index) in files" :key="index">{{element.name}}</div>
    </draggable>
  </div>

</div>

关于javascript - Vue.可拖动 : How to "drag an item onto another item" instead of adding/removing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48061794/

相关文章:

performance - $emit 和 Watchers 的 VueJS 性能成本

ios - 可拖动的 UITextField 在不应该进入编辑状态时进入编辑状态

jquery - 如何防止可调整大小和可拖动元素相互折叠?

ios - UIPanGestureRecognizer 没有被其 SuperView 区域之外的 UIImageView 触发?

javascript - 遍历子节点并查找属性(最多n层)

javascript - CSS 将两个元素并排对齐

javascript - Node.js 异步多个查询

javascript - 使用 switch 语句更改图标图像

javascript - 如何使用纯js更改按钮内显示的文本?

css - 风格 v-html Vue 3