Commit 2eccfc99381f3f5bbbf510edac1e08de4b1bf8fa

Authored by 梁灏
1 parent feb21a0a

fixed #2852

examples/routers/slider.vue
1 -<template>  
2 - <div style="margin: 0 400px;">  
3 - <Slider v-model="valueSingle" @on-change="updateSingleDisplayValue"></Slider>  
4 - <Button @click="randomSingle">change</Button> {{singleDisplayValue}} 1 +<!--<template>-->
  2 + <!--<div style="margin: 0 400px;">-->
  3 + <!--<Slider v-model="valueSingle" @on-change="updateSingleDisplayValue"></Slider>-->
  4 + <!--<Button @click="randomSingle">change</Button> {{singleDisplayValue}}-->
  5 +
  6 + <!--<Slider v-model="valueRange" range @on-change="updateRangeDisplayValue"></Slider>-->
  7 + <!--<Button @click="randomRange">change</Button> {{rangeDisplayValue}}-->
  8 + <!--</div>-->
  9 +<!--</template>-->
  10 +<!--<script>-->
  11 + <!--export default {-->
  12 + <!--data () {-->
  13 + <!--return {-->
  14 + <!--valueSingle: 10,-->
  15 + <!--valueRange: [20, 50],-->
  16 + <!--singleDisplayValue: 10,-->
  17 + <!--rangeDisplayValue: [20, 50]-->
  18 + <!--};-->
  19 + <!--},-->
  20 + <!--methods: {-->
  21 + <!--updateSingleDisplayValue (val){-->
  22 + <!--console.log('updateSingleDisplayValue', val);-->
  23 + <!--this.singleDisplayValue = val;-->
  24 + <!--},-->
  25 + <!--updateRangeDisplayValue (val){-->
  26 + <!--console.log('updateRangeDisplayValue', val);-->
  27 + <!--this.rangeDisplayValue = val.join(' - ');-->
  28 + <!--},-->
  29 + <!--randomSingle () {-->
  30 + <!--this.valueSingle = this.random(0, 100);-->
  31 + <!--},-->
  32 + <!--randomRange () {-->
  33 + <!--this.valueRange = [this.random(0, 50), this.random(50, 100)];-->
  34 + <!--},-->
  35 + <!--random (min, max){-->
  36 + <!--return Math.round(Math.random() * (max - min)) + min;-->
  37 + <!--}-->
  38 + <!--}-->
  39 + <!--};-->
  40 +<!--</script>-->
5 41
6 - <Slider v-model="valueRange" range @on-change="updateRangeDisplayValue"></Slider>  
7 - <Button @click="randomRange">change</Button> {{rangeDisplayValue}} 42 +
  43 +<template>
  44 + <div>
  45 + <Button type="primary" @click="modal1 = true">Display dialog box</Button>
  46 + <Modal v-model="modal1">
  47 + <Slider v-model="value2" range show-tip="always"></Slider>
  48 + </Modal>
8 </div> 49 </div>
9 </template> 50 </template>
10 <script> 51 <script>
11 export default { 52 export default {
12 data () { 53 data () {
13 return { 54 return {
14 - valueSingle: 10,  
15 - valueRange: [20, 50],  
16 - singleDisplayValue: 10,  
17 - rangeDisplayValue: [20, 50]  
18 - }; 55 + modal1: false,
  56 + value2: [20, 50],
  57 + }
19 }, 58 },
20 methods: { 59 methods: {
21 - updateSingleDisplayValue (val){  
22 - console.log('updateSingleDisplayValue', val);  
23 - this.singleDisplayValue = val;  
24 - },  
25 - updateRangeDisplayValue (val){  
26 - console.log('updateRangeDisplayValue', val);  
27 - this.rangeDisplayValue = val.join(' - ');  
28 - },  
29 - randomSingle () {  
30 - this.valueSingle = this.random(0, 100);  
31 - },  
32 - randomRange () {  
33 - this.valueRange = [this.random(0, 50), this.random(50, 100)]; 60 + ok () {
  61 + this.$Message.info('Clicked ok');
34 }, 62 },
35 - random (min, max){  
36 - return Math.round(Math.random() * (max - min)) + min; 63 + cancel () {
  64 + this.$Message.info('Clicked cancel');
37 } 65 }
38 } 66 }
39 - }; 67 + }
40 </script> 68 </script>
src/components/modal/modal.vue
@@ -229,6 +229,7 @@ @@ -229,6 +229,7 @@
229 } 229 }
230 } 230 }
231 this.broadcast('Table', 'on-visible-change', val); 231 this.broadcast('Table', 'on-visible-change', val);
  232 + this.broadcast('Slider', 'on-visible-change', val); // #2852
232 this.$emit('on-visible-change', val); 233 this.$emit('on-visible-change', val);
233 }, 234 },
234 loading (val) { 235 loading (val) {
src/components/slider/slider.vue
@@ -272,8 +272,7 @@ @@ -272,8 +272,7 @@
272 } 272 }
273 }, 273 },
274 274
275 -  
276 - sliderClick: function (event) { 275 + sliderClick (event) {
277 if (this.disabled) return; 276 if (this.disabled) return;
278 const currentX = this.getPointerX(event); 277 const currentX = this.getPointerX(event);
279 const sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left; 278 const sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left;
@@ -290,6 +289,23 @@ @@ -290,6 +289,23 @@
290 this.$emit('on-change', exportValue); 289 this.$emit('on-change', exportValue);
291 this.dispatch('FormItem', 'on-form-change', exportValue); 290 this.dispatch('FormItem', 'on-form-change', exportValue);
292 }, 291 },
  292 + },
  293 + mounted () {
  294 + // #2852
  295 + this.$on('on-visible-change', (val) => {
  296 + if (val && this.showTip === 'always') {
  297 + this.$refs.minTooltip.doDestroy();
  298 + if (this.range) {
  299 + this.$refs.maxTooltip.doDestroy();
  300 + }
  301 + this.$nextTick(() => {
  302 + this.$refs.minTooltip.updatePopper();
  303 + if (this.range) {
  304 + this.$refs.maxTooltip.updatePopper();
  305 + }
  306 + });
  307 + }
  308 + });
293 } 309 }
294 }; 310 };
295 </script> 311 </script>