From 9b862fc16ff20fdb92b997a10ed2e7f223841fc7 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Thu, 01 Apr 2021 10:03:52 +0800 Subject: [PATCH] 更改筛选组件数据传递模式 --- plugins/filter/CFilterSelect.vue | 32 ++++++++++++++++++++++---------- plugins/filter/CFilter.vue | 12 +++++------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/plugins/filter/CFilter.vue b/plugins/filter/CFilter.vue index d7730c4..a5fde0d 100644 --- a/plugins/filter/CFilter.vue +++ b/plugins/filter/CFilter.vue @@ -14,6 +14,7 @@ type="bar" :label="bar.label" :options="selectOptions[bar.name]" + :value="filterRes[bar.name]" :onChange="evt=>handleChange(bar.name, evt)" /> </view> @@ -43,6 +44,7 @@ type="item" :label="item.label" :options="selectOptions[item.name]" + :value="filterRes[item.name]" :onChange="evt=>handleChange(item.name, evt)" /> </view> @@ -78,18 +80,14 @@ }, data() { return { - filters: {}, + filterRes: {}, drawerShow: false, }; }, methods: { handleChange(name, value) { - if (typeof value === 'undefined') { - delete this.filters[name]; - } else { - this.filters[name] = value; - } - this.onChange(this.filters); + this.$set(this.filterRes, name, value); + this.onChange(this.filterRes); }, }, }; diff --git a/plugins/filter/CFilterSelect.vue b/plugins/filter/CFilterSelect.vue index 5c8aefe..4976cb5 100644 --- a/plugins/filter/CFilterSelect.vue +++ b/plugins/filter/CFilterSelect.vue @@ -26,7 +26,7 @@ {{label}}: </view> <view :class="selected ? 'value':'empty'"> - {{selected ? options2[selectIndex].name : ('请选择' + label)}} + {{selected ? options2[current].name : ('请选择' + label)}} </view> <view class='at-icon at-icon-chevron-down' /> </view> @@ -43,27 +43,39 @@ type: String, label: String, options: Array, + value: null, onChange: Function, }, data() { - return { - selectIndex: 0, - selected: false, - }; + return {}; }, computed: { options2() { return [{ name: '- 取消选择 -' }, ...this.options]; }, + current() { + for (let i = 0, item; (item = this.options2[i]); i++) { + if (this.value === item.value) { + return i; + } + } + return -1; + }, + selected() { + for (let item of this.options) { + if (this.value === item.value) { + return true; + } + } + return false; + }, }, methods: { handleChange(index) { - this.selectIndex = Number(index); - if (this.selectIndex > 0) { - this.selected = true; - this.onChange(this.options2[this.selectIndex].value); + const selectIndex = Number(index); + if (selectIndex > 0) { + this.onChange(this.options2[selectIndex].value); } else { - this.selected = false; this.onChange(); } }, -- Gitblit v1.9.1