update Select

This commit is contained in:
梁灏 2018-12-18 11:17:25 +08:00
parent 1a97aa898d
commit ea3648b3c2
2 changed files with 62 additions and 40 deletions

View file

@ -1,53 +1,75 @@
<template> <template>
<div> <Row>
<Select v-model="model1" style="width:200px"> <Col span="12" style="padding-right:10px">
<Option v-for="item in cityList" :value="item.value" :key="item.value">{{ item.label }}</Option> <Select
v-model="model13"
filterable
remote
:remote-method="remoteMethod1"
:loading="loading1">
<Option v-for="(option, index) in options1" :value="option.value" :key="index">{{option.label}}</Option>
</Select> </Select>
</Col>
<Select v-model="model2" multiple style="width:200px"> <Col span="12">
<Option v-for="item in cityList" :value="item.value" :key="item.value">{{ item.label }}</Option> <Select
v-model="model14"
multiple
filterable
remote
:remote-method="remoteMethod2"
:loading="loading2">
<Option v-for="(option, index) in options2" :value="option.value" :key="index">{{option.label}}</Option>
</Select> </Select>
</Col>
<Button type="primary" @click="changeData">changeData</Button> </Row>
</div>
</template> </template>
<script> <script>
export default { export default {
data () { data () {
return { return {
cityList: [ model13: '',
{ loading1: false,
value: 'New York', options1: [],
label: 'New York' model14: [],
}, loading2: false,
{ options2: [],
value: 'London', list: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New hampshire', 'New jersey', 'New mexico', 'New york', 'North carolina', 'North dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode island', 'South carolina', 'South dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West virginia', 'Wisconsin', 'Wyoming']
label: 'London'
},
{
value: 'Sydney',
label: 'Sydney'
},
{
value: 'Ottawa',
label: 'Ottawa'
},
{
value: 'Paris',
label: 'Paris'
},
{
value: 'Canberra',
label: 'Canberra'
}
],
model1: '',
model2: []
} }
}, },
methods: { methods: {
changeData() { remoteMethod1 (query) {
this.model2.push('Canberra') if (query !== '') {
this.loading1 = true;
setTimeout(() => {
this.loading1 = false;
const list = this.list.map(item => {
return {
value: item,
label: item
};
});
this.options1 = list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1);
}, 200);
} else {
this.options1 = [];
}
},
remoteMethod2 (query) {
if (query !== '') {
this.loading2 = true;
setTimeout(() => {
this.loading2 = false;
const list = this.list.map(item => {
return {
value: item,
label: item
};
});
this.options2 = list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1);
}, 200);
} else {
this.options2 = [];
}
} }
} }
} }

View file

@ -761,7 +761,7 @@
}, },
slotOptions(options, old){ slotOptions(options, old){
// #4626 Options label v-model // #4626 Options label v-model
if (options && options.length && this.values.length) { if (options && options.length && this.values.length && !this.multiple) {
this.values = this.values.map(value => { this.values = this.values.map(value => {
const option = options.find(option => { const option = options.find(option => {
if (!option.componentOptions) return false; if (!option.componentOptions) return false;