【发布时间】:2017-11-20 06:50:59
【问题描述】:
我正在尝试在 vue 组件中使用 document.getElementById().scrollIntoView() 来使用 Jump-To-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>
所以有一个具有 ref="solutionDetails" 的 SolutionDetails.Vue 子组件。 我使用子组件的 ref 调用此方法在父组件中:
handleClick(command) {
this.activeTab = 'Solution Details';
this.$refs.solutionDetails.showCurrent(command);
},
子组件中有一个 showCurrent 函数,应该为参数“命令”执行该函数。这就是子组件中的函数。
methods: {
showCurrent(index) {
document.getElementById(index).scrollIntoView();
},
如您所见,showCurrent 应该获取页面中的元素并滚动到视图中。如果 SolutionDetails.vue 是活动选项卡,则相应的元素正在滚动到视图中。但是我正在从其他选项卡执行父函数,然后 this.activeTab = 'Solution Details'; 正在执行,即。活动选项卡正在更改为 SolutionDetails.vue,但请求的元素未滚动到视图中。
当某个其他选项卡是 activeTab 时,我应该如何滚动到某个元素?
【问题讨论】:
标签: javascript html vue.js getelementbyid vue-component