【发布时间】:2017-06-28 10:58:40
【问题描述】:
我想从商店获取复选框状态。我与复选框列表和“活动复选框”列表( inArray(checkList.value, activeFilters) )进行了比较,但我无法从 this.$store.getters.updateFilters 获取值。代码如下:
<template>
<li class="dropdown-child">
<label >
<input
type="checkbox"
:name="checkList.id"
:value="checkList.name"
:checked="inArray(checkList.value, activeFilters)"
@change="updateFilter"
>
<span>{{ checkList.name }}</span>
</label>
</li>
</template>
<script>
export default {
props: ['checkList'],
computed: {
inArray (filterValue, filterChecked) {
const intComparison = /^[+-]?\d+$/.test(filterValue)
for (let i = 0, l = filterChecked.length; i < l; i++) {
if ((intComparison && parseInt(filterChecked[i], 10) === parseInt(filterValue, 10)) || (filterChecked[i] === filterValue)) {
return true
}
}
return false
},
activeFilters(){
return this.$store.getters.updateFilters;
}
},
methods: {
updateFilter (evt) {
const elm = evt.target || evt.srcElement
const action = elm.checked === false
? this.removeFilter(elm) //elm.checked
: this.addFilter(elm)
const value = /^[+-]?\d+$/.test(elm.value)
? parseInt(elm.value)
: elm.value
},
addFilter(elm){
this.$store.dispatch('addFilter', elm);
},
removeFilter(elm){
this.$store.dispatch('removeFilter', elm);
}
}
}
</script>
【问题讨论】:
-
因为您引用的是
activeFilters而不是activeFilterList? -
@Terry 对不起,是旧代码,现在是正确代码
-
将
inArray (filterValue, filterChecked)从计算方法移到方法 -
@VamsiKrishna “类型错误:无法读取未定义的属性‘长度’”
标签: checkbox vue.js vuejs2 vuex