v-model Set operation on key "visible" failed: target is readonly.
时间: 2024-09-29 09:10:19 浏览: 89
Vue v-model组件封装(类似弹窗组件)
`v-model` 是Vue.js中的双向数据绑定指令,用于简化表单元素的数据同步。当你试图通过`v-model`更改一个不可写的属性,如`<input type="checkbox">`的`checked`状态或者是数组的`push()`操作,有时会遇到"Set operation on key "visible" failed: target is readonly."这样的错误。
这个错误提示意味着你在尝试对一个只读(readonly)的目标进行修改,比如在一个计算属性(computed property)或是一个`data`对象中声明为`{ visible: { get: ..., set: ... } }`的响应式属性上使用了`v-model`。在 Vue 中,如果你想要动态地改变一个只读属性,你需要提供一个可设置的函数(setter),而不是直接赋值。
例如:
```javascript
// 错误的方式
data() {
return {
visible: true // 这样是只读的
}
}
// 正确的方式
data() {
return {
visible: { // 使用对象封装,提供 setter 函数
get() {
return this._visible;
},
set(value) {
this._visible = value; // 这里是可以修改的私有变量
// 可能还需要触发视图更新
this.$emit('input', value);
}
}
}
}
```
在这个例子中,你可以通过`this.visible`来获取当前可见状态,而通过`this.visible = newValue`来设置新的状态,同时确保视图会跟着变化。
阅读全文