作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Vue 有一个 good example使用具有相同 name
属性的多个复选框使用 v-model 绑定(bind)到同一数组
但是,由于某些原因我不能使用 v-model 所以我必须使用 @input
发出 checked
同时保持 value
不变。
但它对我不起作用,同时选中/取消选中所有复选框,否则我必须更改我不想要的值。
有解决办法吗?
最佳答案
Vue 在编译包含以这种方式绑定(bind)的复选框的模板时会生成特殊代码。由于您没有使用 v-model
,因此您必须自己处理此功能。
尝试这样的事情:
new Vue({
el: '#app',
data: {
checkboxes: [
{ name: 'jack', value: 'Jack' },
{ name: 'bob', value: 'Bob' },
{ name: 'alice', value: 'Alice' },
],
model: [],
},
computed: {
modelJson() {
return JSON.stringify(this.model);
},
},
methods: {
handleChange(value, checked) {
if (checked) {
this.model = this.model.concat(value);
} else {
this.model = this.model.filter(x => x !== value);
}
},
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div v-for="checkbox of checkboxes" :key="checkbox.name">
<input
type="checkbox"
:id="checkbox.name"
:name="checkbox.name"
:value="checkbox.value"
:checked="model.includes(checkbox.value)"
@change="handleChange(checkbox.value, $event.target.checked)"
/>
<label :for="checkbox.name">{{ checkbox.value }}</label>
</div>
<pre>{{ modelJson }}</pre>
</div>
关于vue.js - 不使用 v-model 的复选框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988058/
我是一名优秀的程序员,十分优秀!