vue.js - Vue v-model 不选择复选框上的值
问题描述
我对 Vue 还很陌生,我已经尽可能多地进行了研究,但找不到解决这个奇怪问题的方法。我正在为在线商店构建过滤器功能,其中一个部分允许基于带有复选框的值进行过滤。
我的Vue模板如下:
<template>
<div>
<h3>{{data.filterLabel}}</h3>
<ul>
<li v-for="(item, index) in data.options" :key="index">
<input v-model="values" type="checkbox" :id="item" :value="item" :index="index" />
<label class="products__label products__capitalize" :for="item">{{ item }}</label>
</li>
</ul>
</div>
</template>
我从数据库中获取选项,并data.options
使用 v-for 循环遍历数组。我创建了一个新的空数组
data() {
return {
values: []
};
},
如 vue.js 网站上的表单绑定示例所示:https ://vuejs.org/v2/guide/forms.html#Checkbox
我的脚本如下:
<script>
export default {
name: "CheckBoxFilter",
data() {
return {
values: []
};
},
props: {
data: Object,
filterCheckBox: Function
},
watch: {
values: function(value) {
const optionRange = JSON.parse(JSON.stringify(this.values));
this.$emit("filterCheckBox", this.data.filterValue, optionRange);
}
}
};
</script>
出于某种奇怪的原因,$emit 函数工作得非常好,并且产品数组在 UI 中被正确过滤。但是当我在复选框中选中一个值时,该复选框没有被勾选。复选框怎么可能没有被勾选,同时它清楚地正确过滤了值?
我什至查看了也正确返回or的:checked
值,但该复选框仍未在 UI 中勾选。$event.target.checked
true
false
我对单选按钮有同样的问题。
没有问题,<input type="text">
也没有问题<select>
。
以前有没有人经历过这种情况,如果有,解决方案是什么?
谢谢!
解决方案
我进行了测试,UI 正确显示了选中/未选中的复选框。你使用哪个版本的 Vue?我不确定你想做什么,但我认为通过计算属性公开你的值会更干净:
export default {
name: "CheckBoxFilter",
props: {
data: Object,
},
data() {
return {
internalValues: [],
};
},
computed: {
values: {
get() {
return this.internalValues;
},
set(newVal) {
this.internalValues = newVal;
this.$emit("filterCheckBox", this.data.filterValue, [...newVal]);
},
},
},
};
</script>
在您当前的实现中,值的变化是不可观察的,并且永远不会发出 filterCheckBox 事件。
编辑:我也不明白你为什么设置 filterCheckBox 道具,它不是 React ;)
推荐阅读
- firebase - vuejs firebase.auth().onAuthStateChanged(() => {
- node.js - express 中的全局请求/响应拦截器
- html - Angular NgFor 遍历数组中的 x 个对象
- html - Visual Studio Code - Emmet / Intellisense 自动完成似乎在属性内不起作用
- sql - 如何显示财务和月份明智的待处理计数、已完成、已拒绝、总计数
- java - JAVA双用char?
- java - CXF 客户端 - 在每个请求之间关闭 TCP 连接
- markdown - 当 Doxygen 生成 HTML 时,为什么 Markdown 中的围栏代码块不以等宽字体显示?
- flutter - flutter_bloc 4.0.0 如何获取事件属性/参数
- java - 将 PDF 复制到新的 PDF,但没有文档的某些部分