Vue Select 标签无法正常工作且可搜索
Vue Select Label not Working Properly with it being Searchable
我正在使用带有分页和可搜索选项的 vue-select。当我在没有搜索的情况下单击选项时,标签道具(用户看到的)显示正确的文本。
但是,当我搜索时,label 属性显示的是值(我正在保存)而不是指定的文本。
如何让 v-select 在搜索时显示 'text' 而不是 code.value?
<v-select
v-model="primary_scenario_field"
:options="paginated"
:reduce="code => code.value"
label="text"
required
searchable
@search="handleVSelectSearch"
>
<li slot="list-header" class="pagination">
<b-button :disabled="!hasPrevPage"
@click="handlePaginationClick('previous')">
Previous
</b-button>
<b-button :disabled="!hasNextPage"
@click="handlePaginationClick('next')">
Next
</b-button>
</li>
</v-select>
data ()
{
search: '',
offset: 0,
limit: 10,
filtered: [],
paginated: [],
code_list: []
},
methods: {
handlePaginationClick (direction){
if(direction == 'next') this.offset = this.offset + 10;
if(direction == 'previous') this.offset = this.offset - 10;
this.$nextTick();
this.paginated = this.paginateResults(this.filtered);
},
paginateResults (value){
return value.slice(this.offset, this.limit + this.offset);
},
async handleVSelectSearch (query = ''){
query = isString(query) ? query.trim().toUpperCase() : query.toUpperCase();
this.filtered = this.filterResults(query);
await this.$nextTick();
this.offset = 10;
this.handlePaginationClick('previous');
},
filterResults (value){
return this.code_list.filter(item => item.text.includes(value));
},
**this.code_list options are getting loaded like this (in an array):
{ text: `${response.a}: ${response.b}`, value: response.id }
我最终取出了 :reduce="code => code.value" 并在提交前手动解析它。
我正在使用带有分页和可搜索选项的 vue-select。当我在没有搜索的情况下单击选项时,标签道具(用户看到的)显示正确的文本。
但是,当我搜索时,label 属性显示的是值(我正在保存)而不是指定的文本。
如何让 v-select 在搜索时显示 'text' 而不是 code.value?
<v-select
v-model="primary_scenario_field"
:options="paginated"
:reduce="code => code.value"
label="text"
required
searchable
@search="handleVSelectSearch"
>
<li slot="list-header" class="pagination">
<b-button :disabled="!hasPrevPage"
@click="handlePaginationClick('previous')">
Previous
</b-button>
<b-button :disabled="!hasNextPage"
@click="handlePaginationClick('next')">
Next
</b-button>
</li>
</v-select>
data ()
{
search: '',
offset: 0,
limit: 10,
filtered: [],
paginated: [],
code_list: []
},
methods: {
handlePaginationClick (direction){
if(direction == 'next') this.offset = this.offset + 10;
if(direction == 'previous') this.offset = this.offset - 10;
this.$nextTick();
this.paginated = this.paginateResults(this.filtered);
},
paginateResults (value){
return value.slice(this.offset, this.limit + this.offset);
},
async handleVSelectSearch (query = ''){
query = isString(query) ? query.trim().toUpperCase() : query.toUpperCase();
this.filtered = this.filterResults(query);
await this.$nextTick();
this.offset = 10;
this.handlePaginationClick('previous');
},
filterResults (value){
return this.code_list.filter(item => item.text.includes(value));
},
**this.code_list options are getting loaded like this (in an array):
{ text: `${response.a}: ${response.b}`, value: response.id }
我最终取出了 :reduce="code => code.value" 并在提交前手动解析它。