javascript - 如何从计算属性中使用 v-for?
问题描述
我有一个组件,我使用 v-for 迭代一个可拖动的 JS 组件
<div v-for="(val, index) in rows" :key="index"><draggable></draggable/></div>
我的 rows 计算属性返回一个数组数组。数组是我使用 v-model 从父级接收的属性。
props: {
array: {
type: Array,
required: false,
default: null
}
},
computed: {
rows () {
if (isTrue) {
const arr = this.array.map((v) => v.slice())
const temp = doSomething(arr)
return temp
} else if (isFalse) {
const arr = this.array.filter(elm => elm.length)
return arr
}
return this.array
}
但是我收到一个错误:'Cannot read property 'Sortable1616400528253' of null' 当我更改数组的行时,我没有收到错误,但结果错误,这意味着行出现问题。有什么建议么?
解决方案
对于 v-model,您需要一个满足 get 和 set 操作的属性。组件道具需要不可变的转换。因此,您可以开发类似示例的解决方案。
var bicomponent=Vue.component('biComponent', {
template: `<div>
<draggable v-model="rows">
<transition-group>
<div v-for="(item, index) in rows" :key="item.id">
{{item.text}}
</div>
</transition-group>
</draggable></div>`,
components:{vuedraggable},
props: {
todoList: {
type: Array,
required: true,
default: []
}
},
data: function () {
return {
rows: this.todoList
}
}
});
推荐阅读
- java - Sort the JTable with a dynamic growing data
- python - How to mount AFP share on macOS with ADSSO authentication?
- laravel - 更改路线时样式和脚本不起作用(vue.js + laravel)
- java - 如何在 Android 中使用 MutableLiveData 仅更新已更改的项目?
- objective-c - 如何从 Xcode 崩溃日志中准确找到发生崩溃的位置?
- python-3.x - try/except 中的动态异常数
- powershell - 需要帮助从 JSON 转换科学数字
- typescript - TypeScript - 处理动态属性更新中的类型
- delphi - 在 ReportBuilder 中以编程方式设置特定行的高度
- asdf-vm - 如何让 asdf 的版本成为版本