【发布时间】:2018-02-06 16:02:03
【问题描述】:
我有一个值的字符串管道,我想对其进行修改。弦管的值范围为 0-5,所以我做了以下操作:
new Vue({
el: '#app',
data: {
valuesString: ""
},
computed: {
values: {
get() {
var values = this.valuesString ? this.valuesString.split("-") : [];
if(values.length < 5)
values.push(null);
return values;
},
set(values) {
this.valuesString = values.filter(value => value).join("-")
}
}
}
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script>
<div id="app">
<div v-for="(value, i) in values" :key="i">
<select v-model="values[i]" style="width: 200px">
<option></option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<br>
<span>valuesString: {{ valuesString }}</span>
<br>
<span>values: {{ values }}</span>
</div>
现在的问题是,我计算的 values 属性的设置器没有被调用。
我的用例是一个类似于类别过滤器的过滤器。我从我的路由器获得valuesString 作为参数。用户应该能够选择 1-5 个类别进行过滤。每次过滤器更改时,路由器参数都应该更改,并且应该出现一个新的空选择,直到设置了 5 个类别。
【问题讨论】:
-
如果我理解正确,您希望用户最多可以选择五个类别并将这些选择的类别构建成一个字符串?
-
没错,因为字符串是我的路由的参数,所以在站点刷新或路由更改后,我的选择应该已经设置(或更改)
标签: javascript vuejs2 vue-router computed-properties computed-observable