javascript - 如何在 Vue created() 钩子中使用原生 javascript 方法?
问题描述
我正在创建简单的 Vue.js 应用程序我正在使用 Vue cli 3,我想使用本机 DOM 方法来观察滚动行为,一切正常,但是当我更改路由器视图时出现问题,然后控制台抛出错误Uncaught TypeError: Cannot read property of undefined
我做错了吗?
created() {
/* contorl slider scroll height and give navbar fixed positiom */
window.addEventListener("scroll", ()=>{
var firstbox = document.getElementById("sliderBox");
if (window.scrollY >= firstbox.scrollHeight) {
this.isVisiable = true
} else {
this.isVisiable = false
}
});
},
解决方案
老实说,我无法确切理解您的问题是什么,但我认为您使用addEventListener
的方式不正确,如果您想在created()
钩子中使用它,还需要在路由更改后销毁它,在 Vue2 中您可以使用destroyed()
钩子,但是在Vue3中你可以使用unmounted()
,希望这对你有帮助
methods:{
yourFunction() {
var firstbox = document.getElementById("sliderBox");
if (window.scrollY >= firstbox.scrollHeight) {
//do something
} else {
//do something
}
}
}
created() {
window.addEventListener("scroll", this.yourFunction);
},
unmounted(){
window.removeEventListener("scroll", this.yourFunction)
}
.
推荐阅读
- asp.net-mvc - 如何在 mvc 中将查询表单详细信息发送到电子邮件
- linux-kernel - “检测到带有损坏的.inst的汇编程序”是什么意思?
- python-3.x - Python在word文档中搜索特定表格
- facebook - Graph Api - 管理多个 Facebook 帐户
- html - HTML - 使用逗号分隔动态拆分数组值
- javascript - 将 blob 嵌入到 HTML
- c# - Visual Studio 与新行合并问题
- ios - LinkedIn url 方案打开 EventMap 应用程序而不是 Linkedin 应用程序
- android - 如何在sqlite android中对行进行排序
- javascript - jsp-无法在 Onclick 属性中调用 javascript 函数