Когда я перехожу на другую страницу с помощью routerLink или $ router.push scrollBehavior работает нормально. Но когда я пытаюсь перейти на ту же страницу наблюдателем, который запускается изменением значения ввода поля ввода, расположенного в центре домашней страницы, scrollBehavior не работает. Скорее он получает позицию внизу новой страницы, по которой осуществляется навигация. Даже если я не использую scrollBehavior, он делает то же самое.
Теперь мой вопрос: как мне добраться до верхней части страницы «О программе» с помощью наблюдателя, изменяющего входное значение?
Компонент HeadSearch:
<template>
<div class = "search">
<input type = "text" v-model = "tx" />
<p>{{ tx }}</p>
</div>
</template>
<script>
export default {
data() {
return {
tx: "",
};
},
watch: {
tx() {
if (this.$route.path !== "/about") {
this.$router.replace("/about");
}
},
},
};
</script>
App.vue:
<template>
<div id = "app">
<div id = "nav">
<router-link to = "/">Home</router-link> |
<router-link to = "/about">About</router-link>
<br /><br />
<head-search></head-search>
<br /><br />
</div>
<router-view />
</div>
</template>
<script>
import HeadSearch from "./components/HeadSearch.vue";
export default {
components: {
HeadSearch,
},
};
</script>
Home.vue:
<template>
<div class = "home">
<h1>This is Home page</h1>
<br /><br /><br />
<input class = "home-input" type = "text" v-model = "hTx" />
</div>
</template>
<script>
export default {
name: "Home",
data() {
return {
hTx: "",
};
},
watch: {
hTx() {
if (this.$route.path !== "/about") {
this.$router.push("/about");
}
},
},
};
</script>
About.vue:
<template>
<div class = "about">
<h1>This is an about page</h1>
<br /><br /><br /><br /><br />
<div v-for = "(cont, index) in 30" :key = "index">
{{ cont }} {{ index }}
<p>Lorem ipsum dolor sit amet.</p>
</div>
</div>
</template>
router.js:
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes,
scrollBehavior(){
return {
x: 0,
y: 0
}
}
})
я только что добавил. посмотри на дно



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете определить scrollTop или scrollIntoView с помощью Javascript или jQuery в вашем компоненте Ометоды и вызвать метод в хуке установленный вашего компонента О.
Используя Javascript или jQuery, вы можете определить я бы, класс или элемент для прокрутки при монтировании компонента О.
например, id = "scrollTarget"
<template>
<div class = "about" id = "scrollTarget">
<h1>This is an about page</h1>
<br /><br /><br /><br /><br />
<div v-for = "(cont, index) in 30" :key = "index">
{{ cont }} {{ index }}
<p>Lorem ipsum dolor sit amet.</p>
</div>
</div>
</template>
<script>
export default {
methods: {
scrollToTop() {
// using Javascript
document.getElementById("scrollTo").scrollIntoView({ behavior: "smooth" })
// OR
// using jQuery
$("html, body").animate({scrollTop: 600}, "slow")
}
},
mounted() {
this.scrollToTop();
}
}
</script>
это не сработало, братан
Я только что обнаружил, что асинхронная прокрутка в scrollBehavior решает проблему
Пожалуйста, покажите вашу конфигурацию
scrollBehaviorв настройках вашего роутера.