diff --git a/examples/routers/select.vue b/examples/routers/select.vue index 904636e..197e34a 100644 --- a/examples/routers/select.vue +++ b/examples/routers/select.vue @@ -84,41 +84,140 @@ <!--}--> <!--</script>--> +<!--<template>--> + <!--<div style="width: 400px;margin: 50px;">--> + <!--<div>data: {{ model13 }}</div>--> + <!--<Row>--> + <!--<Col span="12" style="padding-right:10px">--> + <!--<Select--> + <!--size="small"--> + <!--placeholder="提示提示"--> + <!--v-model="model13"--> + <!--filterable--> + <!--remote--> + <!--transfer--> + <!--:remote-method="remoteMethod1"--> + <!--:loading="loading1">--> + <!--<Option v-for="(option, index) in options1" :value="option.value" :key="index">{{option.label}}</Option>--> + <!--</Select>--> + <!--</Col>--> + <!--<Col span="12">--> + <!--<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>--> + <!--</Col>--> + <!--</Row>--> + <!--</div>--> +<!--</template>--> +<!--<script>--> + <!--export default {--> + <!--data () {--> + <!--return {--> + <!--model13: '',--> + <!--loading1: false,--> + <!--options1: [],--> + <!--model14: [],--> + <!--loading2: false,--> + <!--options2: [],--> + <!--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']--> + <!--}--> + <!--},--> + <!--methods: {--> + <!--remoteMethod1 (query) {--> + <!--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 = [];--> + <!--}--> + <!--}--> + <!--}--> + <!--}--> +<!--</script>--> + <template> - <div style="width: 400px;margin: 50px;"> - <div>data: {{ model13 }}</div> - <Row> - <Col span="12" style="padding-right:10px"> - <Select - size="small" - placeholder="提示提示" - v-model="model13" - filterable - remote - transfer - :remote-method="remoteMethod1" - :loading="loading1"> - <Option v-for="(option, index) in options1" :value="option.value" :key="index">{{option.label}}</Option> - </Select> - </Col> - <Col span="12"> - <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> - </Col> - </Row> + <div> + {{ model10 }} + <Select v-model="model10" multiple style="width:260px"> + <Option v-for="item in cityList" :value="item.value" :key="item.value">{{ item.label }}</Option> + </Select> + ---------- + {{ model14 }} + <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> + <Button @click="clear">clear</Button> </div> </template> <script> export default { data () { return { + cityList: [ + { + value: 'beijing', + label: '北京市' + }, + { + value: 'shanghai', + label: '上海市' + }, + { + value: 'shenzhen', + label: '深圳市' + }, + { + value: 'hangzhou', + label: '杭州市' + }, + { + value: 'nanjing', + label: '南京市' + }, + { + value: 'chongqing', + label: '重庆市' + } + ], + model10: [], model13: '', loading1: false, options1: [], @@ -162,6 +261,9 @@ } else { this.options2 = []; } + }, + clear () { + this.model14 = []; } } } diff --git a/src/components/select/select.vue b/src/components/select/select.vue index 959f746..bdd04a5 100644 --- a/src/components/select/select.vue +++ b/src/components/select/select.vue @@ -369,6 +369,7 @@ const selectedArray = []; const selectedObject = {}; + selected.forEach(item => { if (!selectedObject[item.value]) { selectedArray.push(item); @@ -376,7 +377,8 @@ } }); - this.selectedMultiple = this.remote ? selectedArray : selected; + // #2066 + this.selectedMultiple = this.remote ? this.model.length ? selectedArray : [] : selected; if (slot) { let selectedModel = []; -- libgit2 0.21.4