Commit 8f5b16867d7ed15ab0812fb125fc744ecd1a235e
1 parent
f5ecd167
fixed #196
fixed #196
Showing
3 changed files
with
48 additions
and
8 deletions
Show diff stats
src/components/select/dropdown.vue
1 | 1 | <template> |
2 | - <div class="ivu-select-dropdown"><slot></slot></div> | |
2 | + <div class="ivu-select-dropdown" :style="styles"><slot></slot></div> | |
3 | 3 | </template> |
4 | 4 | <script> |
5 | + import { getStyle } from '../../utils/assist'; | |
5 | 6 | import Popper from 'popper.js'; |
6 | 7 | |
7 | 8 | export default { |
... | ... | @@ -13,9 +14,17 @@ |
13 | 14 | }, |
14 | 15 | data () { |
15 | 16 | return { |
16 | - popper: null | |
17 | + popper: null, | |
18 | + width: '', | |
17 | 19 | }; |
18 | 20 | }, |
21 | + computed: { | |
22 | + styles () { | |
23 | + let style = {}; | |
24 | + if (this.width) style.width = `${this.width}px`; | |
25 | + return style; | |
26 | + } | |
27 | + }, | |
19 | 28 | methods: { |
20 | 29 | update () { |
21 | 30 | if (this.popper) { |
... | ... | @@ -36,6 +45,10 @@ |
36 | 45 | }); |
37 | 46 | }); |
38 | 47 | } |
48 | + // set a height for parent is Modal and Select's width is 100% | |
49 | + if (this.$parent.$options.name === 'iSelect') { | |
50 | + this.width = parseInt(getStyle(this.$parent.$el, 'width')); | |
51 | + } | |
39 | 52 | }, |
40 | 53 | destroy () { |
41 | 54 | if (this.popper) { | ... | ... |
src/components/select/select.vue
test/routers/select.vue
1 | 1 | <template> |
2 | - <i-select :model.sync="model7" style="width:200px" | |
3 | - filterable> | |
4 | - <i-option v-for="item in cityList | limitBy 3" :value="item.value">{{ item.label }}</i-option> | |
5 | - <i-option v-for="item in cityList | limitBy 3 3" :value="item.value">{{ item.label }}</i-option> | |
6 | - </i-select> | |
2 | + <i-button type="primary" @click="modal1 = true">i-selelct加入width样式</i-button> | |
3 | + <i-button type="primary" @click="modal2 = true">i-selelct没有加入width样式</i-button> | |
4 | + | |
5 | + <Modal | |
6 | + :visible.sync="modal1" | |
7 | + title="普通的Modal对话框标题"> | |
8 | + <i-select :model.sync="model1" :style="modalStyle"> | |
9 | + <i-option v-for="item in cityList" :value="item.value">{{ item.label }}</i-option> | |
10 | + </i-select> | |
11 | + </Modal> | |
12 | + | |
13 | + <Modal | |
14 | + :visible.sync="modal2" | |
15 | + title="普通的Modal对话框标题"> | |
16 | + <i-select :model.sync="model1" :style="modalStyle"> | |
17 | + <i-option v-for="item in cityList" :value="item.value">{{ item.label }}</i-option> | |
18 | + </i-select> | |
19 | + </Modal> | |
7 | 20 | </template> |
8 | 21 | <script> |
9 | 22 | export default { |
10 | 23 | data () { |
11 | 24 | return { |
25 | + modal1: false, | |
26 | + modal2: false, | |
27 | + modalStyle: '', | |
12 | 28 | cityList: [ |
13 | 29 | { |
14 | 30 | value: 'beijing', |
... | ... | @@ -35,7 +51,17 @@ |
35 | 51 | label: '重庆市' |
36 | 52 | } |
37 | 53 | ], |
38 | - model7: '' | |
54 | + model1: '' | |
55 | + } | |
56 | + }, | |
57 | + computed: { | |
58 | + modalStyle: function(){ | |
59 | + let s = "" | |
60 | + if (this.modal1) | |
61 | + s = "width: 200px" | |
62 | + if (this.modal2) | |
63 | + s = "" | |
64 | + return s | |
39 | 65 | } |
40 | 66 | } |
41 | 67 | } | ... | ... |