Commit e99320431095b04b723424f92c0d89efd97810d7

Authored by Aresn
1 parent d6070b23

fixed #978

Showing 2 changed files with 159 additions and 158 deletions   Show diff stats
examples/routers/select.vue
1   -<!--<template>-->
2   - <!--<Row>-->
3   - <!--<i-col span="4">{{model}}</i-col>-->
4   - <!--<i-col span="8">-->
5   - <!--<i-select v-model="model" :label="['L Alabama', 'L Hawaii']" multiple @input="handleInput" filterable remote :remote-method="remoteMethod" :loading="loading" clearable>-->
6   - <!--<i-option v-for="option in options" :value="option.value" :key="new Date()">{{option.label}}</i-option>-->
7   - <!--</i-select>-->
8   - <!--</i-col>-->
9   - <!--</Row>-->
10   -<!--</template>-->
11   -
12   -<!--<script>-->
13   - <!--export default {-->
14   - <!--data () {-->
15   - <!--return {-->
16   -<!--// model: 'Alabama',-->
17   - <!--model: ['Alabama', 'Hawaii'],-->
18   - <!--options: [-->
19   -
20   - <!--],-->
21   - <!--list: [],-->
22   - <!--loading: false,-->
23   - <!--states: ["Al", "Alabama", "Alaska", "Arizona",-->
24   - <!--"Arkansas", "California", "Colorado",-->
25   - <!--"Connecticut", "Delaware", "Florida",-->
26   - <!--"Georgia", "Hawaii", "Idaho", "Illinois",-->
27   - <!--"Indiana", "Iowa", "Kansas", "Kentucky",-->
28   - <!--"Louisiana", "Maine", "Maryland",-->
29   - <!--"Massachusetts", "Michigan", "Minnesota",-->
30   - <!--"Mississippi", "Missouri", "Montana",-->
31   - <!--"Nebraska", "Nevada", "New Hampshire",-->
32   - <!--"New Jersey", "New Mexico", "New York",-->
33   - <!--"North Carolina", "North Dakota", "Ohio",-->
34   - <!--"Oklahoma", "Oregon", "Pennsylvania",-->
35   - <!--"Rhode Island", "South Carolina",-->
36   - <!--"South Dakota", "Tennessee", "Texas",-->
37   - <!--"Utah", "Vermont", "Virginia",-->
38   - <!--"Washington", "West Virginia", "Wisconsin",-->
39   - <!--"Wyoming"]-->
40   - <!--}-->
41   - <!--},-->
42   - <!--mounted () {-->
43   - <!--this.options = [-->
44   -<!--// {-->
45   -<!--// label: '全部',-->
46   -<!--// value: 0-->
47   -<!--// },{-->
48   -<!--// label: '苹果',-->
49   -<!--// value: 1-->
50   -<!--// },{-->
51   -<!--// label: '香蕉',-->
52   -<!--// value: 2-->
53   -<!--// },{-->
54   -<!--// label: '西瓜',-->
55   -<!--// value: 3-->
56   -<!--// }-->
57   - <!--];-->
58   - <!--},-->
59   - <!--methods: {-->
60   - <!--handleAdd () {-->
61   - <!--this.options = [-->
62   - <!--{-->
63   - <!--label: '全部',-->
64   - <!--value: 0-->
65   - <!--},{-->
66   - <!--label: '苹果',-->
67   - <!--value: 1-->
68   - <!--},{-->
69   - <!--label: '香蕉',-->
70   - <!--value: 2-->
71   - <!--},{-->
72   - <!--label: '西瓜',-->
73   - <!--value: 3-->
74   - <!--}-->
75   - <!--]-->
76   - <!--},-->
77   - <!--remoteMethod (query) {-->
78   - <!--console.log(13)-->
79   - <!--if (query !== '') {-->
80   - <!--this.loading = true;-->
81   - <!--setTimeout(() => {-->
82   - <!--this.loading = false;-->
83   - <!--this.options = this.list.filter(item => {-->
84   - <!--return item.label.toLowerCase()-->
85   - <!--.indexOf(query.toLowerCase()) > -1;-->
86   - <!--});-->
87   - <!--}, 500);-->
88   - <!--} else {-->
89   - <!--this.options = [];-->
90   - <!--}-->
91   - <!--},-->
92   - <!--handleInput () {-->
93   -<!--// console.log(1)-->
94   - <!--}-->
95   - <!--},-->
96   - <!--mounted () {-->
97   - <!--this.list = this.states.map(item => {-->
98   - <!--return {-->
99   - <!--value: item,-->
100   - <!--label: 'L ' + item-->
101   - <!--};-->
102   - <!--});-->
103   - <!--}-->
104   - <!--}-->
105   -<!--</script>-->
106   -
107   -
108 1 <template>
109   - <div>
110   - <Row style="width: 400px;">
111   - <i-col span="12" style="padding-right:10px">
112   - <Select v-model="model11" filterable>
113   - <Option v-for="item in cityList" :value="item.value" :key="item">{{ item.label }}</Option>
114   - </Select>
115   - </i-col>
116   - <i-col span="12">
117   - <Select v-model="model12" filterable multiple>
118   - <Option v-for="item in cityList" :value="item.value" :key="item">{{ item.label }}</Option>
119   - </Select>
120   - </i-col>
121   - </Row>
122   - <Button @click="handleSet">set</Button>
123   - </div>
  2 + <Row>
  3 + <i-col span="4">{{model}}</i-col>
  4 + <i-col span="8">
  5 + <i-select v-model="model" multiple @input="handleInput" filterable remote :remote-method="remoteMethod" :loading="loading" clearable>
  6 + <i-option v-for="option in options" :value="option.value" :key="new Date()">{{option.label}}</i-option>
  7 + </i-select>
  8 + </i-col>
  9 + </Row>
124 10 </template>
  11 +
125 12 <script>
126 13 export default {
127 14 data () {
128 15 return {
129   - cityList: [
130   - {
131   - value: 'beijing',
132   - label: '北京市'
133   - },
134   - {
135   - value: 'shanghai',
136   - label: '上海市'
137   - },
138   - {
139   - value: 'shenzhen',
140   - label: '深圳市'
141   - },
142   - {
143   - value: 'hangzhou',
144   - label: '杭州市'
145   - },
146   - {
147   - value: 'nanjing',
148   - label: '南京市'
149   - },
150   - {
151   - value: 'chongqing',
152   - label: '重庆市'
153   - }
  16 +// model: 'Alabama',
  17 + model: ['Alabama', 'Hawaii'],
  18 + options: [
  19 +
154 20 ],
155   - model11: '',
156   - model12: []
  21 + list: [],
  22 + loading: false,
  23 + states: ["Al", "Alabama", "Alaska", "Arizona",
  24 + "Arkansas", "California", "Colorado",
  25 + "Connecticut", "Delaware", "Florida",
  26 + "Georgia", "Hawaii", "Idaho", "Illinois",
  27 + "Indiana", "Iowa", "Kansas", "Kentucky",
  28 + "Louisiana", "Maine", "Maryland",
  29 + "Massachusetts", "Michigan", "Minnesota",
  30 + "Mississippi", "Missouri", "Montana",
  31 + "Nebraska", "Nevada", "New Hampshire",
  32 + "New Jersey", "New Mexico", "New York",
  33 + "North Carolina", "North Dakota", "Ohio",
  34 + "Oklahoma", "Oregon", "Pennsylvania",
  35 + "Rhode Island", "South Carolina",
  36 + "South Dakota", "Tennessee", "Texas",
  37 + "Utah", "Vermont", "Virginia",
  38 + "Washington", "West Virginia", "Wisconsin",
  39 + "Wyoming"]
157 40 }
158 41 },
  42 + mounted () {
  43 + this.options = [
  44 +// {
  45 +// label: '全部',
  46 +// value: 0
  47 +// },{
  48 +// label: '苹果',
  49 +// value: 1
  50 +// },{
  51 +// label: '香蕉',
  52 +// value: 2
  53 +// },{
  54 +// label: '西瓜',
  55 +// value: 3
  56 +// }
  57 + ];
  58 + },
159 59 methods: {
160   - handleSet () {
161   - this.model11 = 'shanghai';
162   -// this.model12 = ['beijing'];
  60 + handleAdd () {
  61 + this.options = [
  62 + {
  63 + label: '全部',
  64 + value: 0
  65 + },{
  66 + label: '苹果',
  67 + value: 1
  68 + },{
  69 + label: '香蕉',
  70 + value: 2
  71 + },{
  72 + label: '西瓜',
  73 + value: 3
  74 + }
  75 + ]
  76 + },
  77 + remoteMethod (query) {
  78 + console.log(13)
  79 + if (query !== '') {
  80 + this.loading = true;
  81 + setTimeout(() => {
  82 + this.loading = false;
  83 + this.options = this.list.filter(item => {
  84 + return item.label.toLowerCase()
  85 + .indexOf(query.toLowerCase()) > -1;
  86 + });
  87 + }, 500);
  88 + } else {
  89 + this.options = [];
  90 + }
  91 + },
  92 + handleInput () {
  93 +// console.log(1)
163 94 }
  95 + },
  96 + mounted () {
  97 + this.list = this.states.map(item => {
  98 + return {
  99 + value: item,
  100 + label: 'L ' + item
  101 + };
  102 + });
164 103 }
165 104 }
166 105 </script>
  106 +
  107 +
  108 +<!--<template>-->
  109 + <!--<div>-->
  110 + <!--<Row style="width: 400px;">-->
  111 + <!--<i-col span="12" style="padding-right:10px">-->
  112 + <!--<Select v-model="model11" filterable>-->
  113 + <!--<Option v-for="item in cityList" :value="item.value" :key="item">{{ item.label }}</Option>-->
  114 + <!--</Select>-->
  115 + <!--</i-col>-->
  116 + <!--<i-col span="12">-->
  117 + <!--<Select v-model="model12" filterable multiple>-->
  118 + <!--<Option v-for="item in cityList" :value="item.value" :key="item">{{ item.label }}</Option>-->
  119 + <!--</Select>-->
  120 + <!--</i-col>-->
  121 + <!--</Row>-->
  122 + <!--<Button @click="handleSet">set</Button>-->
  123 + <!--</div>-->
  124 +<!--</template>-->
  125 +<!--<script>-->
  126 + <!--export default {-->
  127 + <!--data () {-->
  128 + <!--return {-->
  129 + <!--cityList: [-->
  130 + <!--{-->
  131 + <!--value: 'beijing',-->
  132 + <!--label: '北京市'-->
  133 + <!--},-->
  134 + <!--{-->
  135 + <!--value: 'shanghai',-->
  136 + <!--label: '上海市'-->
  137 + <!--},-->
  138 + <!--{-->
  139 + <!--value: 'shenzhen',-->
  140 + <!--label: '深圳市'-->
  141 + <!--},-->
  142 + <!--{-->
  143 + <!--value: 'hangzhou',-->
  144 + <!--label: '杭州市'-->
  145 + <!--},-->
  146 + <!--{-->
  147 + <!--value: 'nanjing',-->
  148 + <!--label: '南京市'-->
  149 + <!--},-->
  150 + <!--{-->
  151 + <!--value: 'chongqing',-->
  152 + <!--label: '重庆市'-->
  153 + <!--}-->
  154 + <!--],-->
  155 + <!--model11: '',-->
  156 + <!--model12: []-->
  157 + <!--}-->
  158 + <!--},-->
  159 + <!--methods: {-->
  160 + <!--handleSet () {-->
  161 + <!--this.model11 = 'shanghai';-->
  162 +<!--// this.model12 = ['beijing'];-->
  163 + <!--}-->
  164 + <!--}-->
  165 + <!--}-->
  166 +<!--</script>-->
... ...
src/components/select/select.vue
... ... @@ -127,7 +127,8 @@
127 127 inputLength: 20,
128 128 notFound: false,
129 129 slotChangeDuration: false, // if slot change duration and in multiple, set true and after slot change, set false
130   - model: this.value
  130 + model: this.value,
  131 + currentLabel: this.label
131 132 };
132 133 },
133 134 computed: {
... ... @@ -593,15 +594,15 @@
593 594 if (this.remote) {
594 595 if (!this.multiple && this.model !== '') {
595 596 this.selectToChangeQuery = true;
596   - if (this.label === '') this.label = this.model;
597   - this.lastQuery = this.label;
598   - this.query = this.label;
  597 + if (this.currentLabel === '') this.currentLabel = this.model;
  598 + this.lastQuery = this.currentLabel;
  599 + this.query = this.currentLabel;
599 600 } else if (this.multiple && this.model.length) {
600   - if (this.label.length !== this.model.length) this.label = this.model;
  601 + if (this.currentLabel.length !== this.model.length) this.currentLabel = this.model;
601 602 this.selectedMultiple = this.model.map((item, index) => {
602 603 return {
603 604 value: item,
604   - label: this.label[index]
  605 + label: this.currentLabel[index]
605 606 };
606 607 });
607 608 }
... ...