【问题标题】:how to use draggable in vuejs如何在 vuejs 中使用可拖动
【发布时间】:2022-01-04 04:06:21
【问题描述】:

我正在尝试使用 draggable 像这样拖动表格中的标题列

<thead>
  <draggable
    v-model="fields"
    :element="'tr'"
    :options="{ animation: 150 }"
  >
    <th class="" style="min-width: 59px"><Checkbox /></th>
    <th
      v-for="(field, index) in fields"
      :key="index"
      :style="field.type === 'date' ? 'text-align:center' : ''"
    >
      {{ field.text }}
    </th>
  </draggable>
</thead>
<script>
  import Checkbox from "./Checkbox.vue";
  import draggable from "vuedraggable";
  export default {
    components: {
      Checkbox,
      draggable,
    },
    props: {
      fields: Array,
      data: Array,
    },

但是当我启动项目时,它显示错误

避免直接改变prop,因为值会被覆盖 每当父组件重新渲染时。相反,使用数据或 基于道具值的计算属性。道具被变异: “领域” 请帮我这么多

【问题讨论】:

    标签: javascript vue.js draggable


    【解决方案1】:

    问题是你定义了你的 fields: Array 并且你在你的 v-for 里面使用它是正确的(如果它真的是一个数组)。

    但您在dragable v-model 中也使用了名称fields。如果您要重命名它并将代码中的其他所有内容更改为新名称,它应该可以解决。

    因此,在您的情况下,您将数据 (fields) 从您的parent.vue 发送到您的child.vue,每次您从dragable 中选择某些内容时,它都会覆盖v-for 中的array

    这么少的例子:
    数组字段:[Cat, Dog, Mouse] - 您正在使用 v-model fields Cat 进行选择 - 现在您的新数组字段将被覆盖..

    希望你现在清楚了!

    【讨论】:

    • 我正在尝试更改该名称,但我不工作
    • 还是同样的错误?你如何改变它..你能更新你的代码吗?
    • 我更改名称并添加相同的值但它只能更改thead,但tbody中的数据不会随tad而改变
    • 你能指导我解决这个问题吗?
    • 请提供您当前的代码,或者如果您创建一个沙箱或其他我可以检查您的代码的东西会更好..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多