我正在尝试使用document.getElementById().scrollIntoView()在vue组件中实现跳转到div的功能。
如果我在组件内调用函数,该功能可以正常工作。但是,如果我尝试使用ref从父组件调用函数,则元素不会滚动到视图中。
父组件是一个页面,子组件是页面中的选项卡。
这是位于父组件中的子Vue组件:
<el-tab-pane label="Solution Details" name="Solution Details" v-loading="loading">
<solution-details
:formData="response"
ref="solutionDetails"
@done="$emit('done')">
</solution-details>
</el-tab-pane>
有一个SolutionDetails.Vue子组件,它有一个ref="solutionDetails"。 我在父组件中使用子组件的ref来调用此方法:
handleClick(command) {
this.activeTab = 'Solution Details';
this.$refs.solutionDetails.showCurrent(command);
},
子组件中有一个 showCurrent 函数,应该基于一个名为 "command" 的参数进行执行。这是在 子组件中 定义的函数。
methods: {
showCurrent(index) {
document.getElementById(index).scrollIntoView();
},
如您所见,showCurrent应该获取页面中的元素并滚动到视图中。如果SolutionDetails.vue是活动选项卡,则相应的元素会被滚动到视图中。但如果我从其他选项卡执行父函数,则会执行this.activeTab = 'Solution Details';
,即活动选项卡正在更改为SolutionDetails.vue,但请求的元素未滚动到视图中。
当其他选项卡为activeTab时,您应该怎么做才能滚动到一个元素?
$el
。有关更多详细信息,请参见此答案:https://dev59.com/Brbna4cB1Zd3GeqPjOkp#58393099 - Liran H$el
真的救了我的晚上。 - Luckybug