Javascript vue可拖动-无法直接改变我的阵列

Javascript vue可拖动-无法直接改变我的阵列,javascript,vue.js,sortablejs,Javascript,Vue.js,Sortablejs,我正在使用vue draggable更改数组元素顺序。假设我的数组是: data: { array1: [{text: 'text1'},{text: 'text2'},{text: 'text3'}] } 在我的模板上,我只使用: <draggable v-model="array1" > v-for etc... </draggable> 我使用vue可拖动和bam: “[Vue warn]:避免直接改变道具,因为每当父组件重新呈现时,该值将被覆盖。” 我不能简

我正在使用
vue draggable
更改数组元素顺序。假设我的数组是:

data: {
 array1: [{text: 'text1'},{text: 'text2'},{text: 'text3'}]
}
在我的模板上,我只使用:

<draggable v-model="array1" >
v-for etc...
</draggable>
我使用vue可拖动和bam:
“[Vue warn]:避免直接改变道具,因为每当父组件重新呈现时,该值将被覆盖。”

我不能简单地在数据内部声明
array1
,因为它是异步的。所以我把它写在计算机里:

   array2: {
      get: function () {
        //return JSON.parse(JSON.stringify(this.array1))          
        return this.array1.slice()          
      },
      set: function () {
        this.array2
      }
  },
   array2: {
      get: function () {
        if (this.modifiedArray) {
            return this.modifiedArray;
        }
        //return JSON.parse(JSON.stringify(this.array1))          
        return this.array1.slice()          
      },
      set: function () {
        this.proTemplate
      }
  },
这显然行不通,因为getter总是硬编码为prop的slice()。我昨天在这里提出了一个问题:

因此建议在
array2
computed中编写某种新的computed并添加if语句:

   array2: {
      get: function () {
        //return JSON.parse(JSON.stringify(this.array1))          
        return this.array1.slice()          
      },
      set: function () {
        this.array2
      }
  },
   array2: {
      get: function () {
        if (this.modifiedArray) {
            return this.modifiedArray;
        }
        //return JSON.parse(JSON.stringify(this.array1))          
        return this.array1.slice()          
      },
      set: function () {
        this.proTemplate
      }
  },
我在将vue可拖动更改寻址到modifiedArray computed时遇到了一个问题,因为我无法在可拖动内更改v模型:


有人知道如何更改它以在外部阵列/计算中获得vue可拖动结果吗?

我试图复制我对您的问题的理解

我使用Lodash库中的
clone
方法来防止
“[Vue warn]:避免直接变异道具…”
错误


希望它有帮助

这不会起作用,因为prop['array']是异步的。这将仅在开始时克隆空阵列。这是相当棘手的:)您应该发出一个事件来通知父组件更新值,一旦父组件更新了道具,子组件也将更新。道具将以只读方式使用。尽管如此,正如@Sphinx所建议的,您可以发出一个事件,以便在父组件中进行突变。