我在模态中有一个Vue日历,当日历出现时,我希望窗口滚动到底部,但是我正在努力实现它。 由于模式太大,我无法共享该模式的代码,因此,我仅共享vue组件。 任何帮助将不胜感激,谢谢。
这是我的Vue日历组件:
<template class="date-picker-addon">
<div class="date-picker-box">
<datepicker :placeholder="today" v-on:selected="startDate"></datepicker>
</div>
</template>
<script>
import Datepicker from "vuejs-datepicker/dist/vuejs-datepicker.esm.js";
import * as lang from "vuejs-datepicker/src/locale";
const state = {
date1: new Date()
}
export default {
components: {
Datepicker
},
data() {
return {
today: null,
format: "d MMMM yyyy",
disabledDates: {},
disabledFn: {
customPredictor(date) {
if (date.getDate() % 3 === 0) {
return true;
}
}
},
highlightedFn: {
customPredictor(date) {
if (date.getDate() % 4 === 0) {
return true;
}
}
},
highlighted: {},
eventMsg: null,
state: state,
language: "en",
languages: lang,
vModelExample: null,
changedMonthLog: []
};
},
mounted: function(){
let today = new Date();
let dd = today.getDate();
let mm = today.getMonth() + 1; //January is 0!
let yyyy = today.getFullYear();
if(dd < 10) {
dd = `0${dd}`
};
if(mm < 10) {
mm = `0${mm}`
};
this.today = `${mm}/${dd}/${yyyy}`;
},
methods: {
startDate(value){
let startDate = new Date(value);
let dd = startDate.getDate();
let mm = startDate.getMonth() + 1; //January is 0!
let yyyy = startDate.getFullYear();
if(dd < 10) {
dd = `0${dd}`
};
if(mm < 10) {
mm = `0${mm}`
};
startDate = `${yyyy}-${mm}-${dd}`;
this.$emit('update', startDate);
}
};
</script>
答案 0 :(得分:1)
确保您的自定义模式组件发出事件:
this.$emit('open', true)
向模态组件添加引用并观察open
事件:
<modal @open="handleOpen" ref="myModal">
打开时,滚动到底部:
handleOpen() {
this.$refs.myModal.scrollTop = this.$refs.myModal.scrollHeight
}
仅当您的modal
组件的顶级元素是具有overflow-y: auto
样式的div时,此方法才起作用。
如果不是这种情况,请将逻辑移到模式组件中,并将ref分配给确实具有overflow-y: auto
样式的元素。
答案 1 :(得分:0)
尝试纯JS怎么样?
modal.scrollTop = modal.scrollHeight
我不确定这是否是最好的答案,但是由于我来自JQuery,而且在Vue中没有找到通常的“易于使用”功能,因此我通常使用纯JavaScript来实现(通常将其包装在mixin,例如“ domMixins”)。希望对您有所帮助。
答案 2 :(得分:0)
简单方法:
在Modal的可滚动元素上输入id =“ SomeName”(可能为完整内容) 然后添加div class =“ modal ...... @ focus =” handleOpenNews“ 并添加到方法:
handleOpenNews() {
document.getElementById('SomeName').scrollTo...you needs
}