gpt4 book ai didi

vue.js - Vue 计算 setter 不适用于复选框?

转载 作者:行者123 更新时间:2023-12-05 09:18:19 26 4
gpt4 key购买 nike

我有一个计算二传手:

rating: {
get() {
return this.$store.state.rating;
},

set(value) {
console.log(value);

this.$store.commit('updateFilter', {
name: this.name,
value
});
}
}

这与我的评分相关联,如下所示:

<label>
<input type="checkbox" :value="Number(value)" v-model="rating">
{{ index }}
</label>

我希望计算的 setter 记录一个数组,因为当我使用观察者观察评级模型的变化时,我得到一个数组。

除了每当我使用像上面这样的计算 setter 时,它只会在选中复选框时输出 true 或在取消选中它们时输出 false

这是怎么回事,我应该像观察者一样获取数组吗?

最佳答案

v-model 有点 "magical"行为,特别是当applied to checkboxes .当绑定(bind)到数组时,复选框将根据其选中状态向数组添加值或从数组中删除值。

在您的示例中不清楚 Number(value) 中的 value 是什么。它应该是您希望在选中该框时包含在数组中的值。

以上面链接的 Vue 文档中的示例为例,我将其修改为使用计算,并且它的工作方式与您预期的一样,set 获取数组的新值。

new Vue({
el: '#app',
data: {
checkedNames: []
},
computed: {
proxyCheckedNames: {
get() {
return this.checkedNames;
},
set(newValue) {
this.checkedNames = newValue;
}
}
}
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script>
<div id="app">
<input type="checkbox" id="jack" value="Jack" v-model="proxyCheckedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="proxyCheckedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="proxyCheckedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames }}</span>
</div>

关于vue.js - Vue 计算 setter 不适用于复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com