我如何使用带有已安装的钩子的scrollIntoView()

问题描述 投票:0回答:1

我有一个Vue组件,并且模板中有一些div元素,一些图像和从Laravel 6.0传递过来的User对象。在我尝试将MountsIntoView()与Mounted()函数一起使用之前,一切工作都很好。据我所知,页面在完全加载之前正在尝试scrollIntoView()。如果我将用户对象限制为较小的大小(仅2个用户),则一切正常。但是,如果有更多数据,它不会像应有的那样滚动查看。如果我使用设置的超时功能,它确实可以工作,但是看起来很乱,不专业。

我只想在装入/加载视图后滚动到div(标题)。 div是页面上的第一个div,并且没有图像(即使这很重要)。谁能帮我解决这个问题?我已经看到,挂载函数仅适用于虚拟DOM吗?如果是这样,我们可以在Vue中使用什么,更类似于JQuery $(document).ready(),但用于特定组件并适用于实际DOM?

  mounted() {       
    var elmnt = document.getElementById("move-to-header");
    elmnt.scrollIntoView(true);
    }
  }
javascript vuejs2 laravel-6
1个回答
0
投票
我通过使用axios请求的回调函数使它正常工作。但是,我确实需要将其包装在setTimeout函数中,没有指定的毫秒数,但是总体来说它没有错误。

get_user(the_name) { axios .post("/get_users", { the_name: the_name}) .then(response => { this.display_user(response.data); setTimeout(() => { var elmnt = document.getElementById("move-to-header"); elmnt.scrollIntoView(); })

© www.soinside.com 2019 - 2024. All rights reserved.