循环中更改数据的问题:它是 v-for 的功能还是组件的错误或我的代码的错误?

Posted

技术标签:

【中文标题】循环中更改数据的问题:它是 v-for 的功能还是组件的错误或我的代码的错误?【英文标题】:Issue with changed data in a loop: Is it a feature of v-for or a bug of a component or a bug of my code? 【发布时间】:2018-10-29 10:15:57 【问题描述】:

我使用vue-smooth-dnd,但在从另一个播放列表复制曲目后,我无法在一个播放列表中拖动曲目。

Here 是最少的代码 - 只需单击按钮即可将曲目从一个播放列表复制到另一个播放列表,然后尝试拖动两个播放列表中的任何曲目。结果,您会看到“Slow”播放列表中的曲目是可拖动的,但在“Electro”中则不能。

但是,如果您将第一个 :key:key="playlistObj.playlistTitle" 更改为 :key="Math.floor(Math.random() * (100 - 1)) + 1",则在第一个播放列表中拖动的曲目开始起作用。

它是 v-for 的功能还是我使用的组件的错误或我的代码的错误?

【问题讨论】:

就像您现在的代码一样,我可以在同一个播放列表中拖放。如果我尝试从一个播放列表拖到另一个播放列表,则永远不会调用 onDrop 方法。 “Draggables 可以在具有相同组名的容器之间移动。如果未设置,容器将不接受来自外部的拖动。” Source。我在这里做了一个分叉:codesandbox.io/s/kxqz54k2yo 我将 group-name="group" 添加到 Component 元素。 @JohanKarlsson 嗨!。感谢您的答复。我不需要将曲目从一个播放列表拖到另一个播放列表。我需要将曲目从“Slow”播放列表复制到“Electro”,我希望在“Electro”中获得可拖动的曲目,但它们不可拖动。复制曲目后,我可以只拖动“慢速”播放列表中的曲目。 【参考方案1】:

这是组件的问题,已经修复。

【讨论】:

以上是关于循环中更改数据的问题:它是 v-for 的功能还是组件的错误或我的代码的错误?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js v-for 循环绑定数组中的项目对象并在更改时更新

如何在 v-for 循环期间有条件地更改表格行样式?

5,v-for循环

Vue:如何在 v-for 中执行响应式对象更改检测?

Vue中的v-for循环,实现div块的循环生成

v-for 循环内 v-model 的动态绑定