【问题标题】:Implementing Vue draggable with cards?用卡片实现 Vue 可拖动?
【发布时间】:2020-08-20 07:02:01
【问题描述】:

我正在尝试使用 Vuetify Cards 实现 vuedraggable,但由于某种原因,当卡片在单行中时拖放不起作用,但在它们位于列中时起作用。

看看这个工作CodeSandbox

Parent.vue 文件中,如果我删除包裹<HelloWorld /> 组件的<v-layout> </v-layout>,卡片会进入一列,并且拖放操作会再次开始。

这是我的 HelloWorld 组件:-

<template>
  <v-flex xs4>
    <v-card class="mx-4">
      <v-img :src="src"></v-img>
      <v-card-title primary-title>
        <div>{{title}}</div>
      </v-card-title>
    </v-card>
  </v-flex>
</template>

<script>
export default {
  name: "HelloWorld",
  props: {
    title: String,
    src: String,
    id: Number
  },
  data() {
    return {};
  }
};
</script>

这是我的父组件:-

<template>
  <v-container>
    <v-layout class="mt-5 align-center justify-center row fill-height">
      <h2>Parent Component</h2>
    </v-layout>
    <draggable v-model="draggableCards">
      <v-layout>
        <template v-for="(tech,i) in getCardArray">
          <HelloWorld :src="tech.src" :title="tech.title" :key="i"/>
        </template>
      </v-layout>
    </draggable>
  </v-container>
</template>

<script>
import { mapGetters, mapMutations } from "vuex";
import HelloWorld from "./HelloWorld";
import draggable from "vuedraggable";
export default {
  components: {
    draggable,
    HelloWorld
  },
  computed: {
    ...mapGetters({
      getCardArray: "getCardArray"
    }),
    draggableCards: {
      get() {
        return this.$store.state.cardArray;
      },
      set(val) {
        this.$store.commit("setCardArray", val);
      }
    }
  },
  methods: {
    ...mapMutations({
      setCardArray: "setCardArray"
    })
  }
};
</script>

如果有人能帮我解决这个问题,我肯定会很感激。谢谢。

【问题讨论】:

    标签: javascript vue.js vuetify.js sortablejs vuedraggable


    【解决方案1】:

    尝试使用可拖动容器作为v-layout,例如:

    <draggable tag="v-layout" v-model="draggableCards">
    

    您可以查看代码here

    【讨论】:

    • 您先生是个天才。我为此快疯了。我希望我能不止一次地对此表示赞同。非常感谢。
    • 快速提问,只是使用 v-layout 会弄乱布局,如果我想传递多个像 row wrap 这样的布局怎么办?
    • 如何将row wrap 添加为可拖动的类?即&lt;draggable tag="v-layout" class="row wrap" v-model="draggableCards"&gt;?
    • 您先生是个直率的 G。非常感谢您
    猜你喜欢
    • 2023-03-02
    • 2022-08-24
    • 2019-11-04
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2021-08-30
    • 2021-03-04
    相关资源
    最近更新 更多