错误如上图所示 Cannot read property 'getBoundingClientRect' of undefined
代码:在该方法中使用了 getBoundingClientRect()
loadMore() {
let basic = document.getElementsByClassName("ue-editor")[0].getBoundingClientRect();
}
代码:在mouted中调用了(监听滚动条事件)
mounted() {
document.querySelector(".__panel").addEventListener("scroll", this.loadMore, true);
this.$once("hook: beforeDestroy", () => {
document.querySelector(".__panel").removeEventListener("scroll", this.loadMore);
});
},
出现问题的原因:
1.addEventListener 和 removeEventListener中的参数必须保持一致,否则无法正常移除监听
2.this.$once:(由于滚动条触发的事件为多次,只执行一次删除无法完全移除监听)
vm.$once( event, callback )
-
参数:
{string} event
{Function} callback
-
用法:
监听一个自定义事件,但是只触发一次。一旦触发之后,监听器就会被移除。
修改后:
mounted() {
document.querySelector(".__panel").addEventListener("scroll", this.loadMore, true);
// this.$once("hook: beforeDestroy", () => {
// document.querySelector(".__panel").removeEventListener("scroll", this.loadMore);
// });
},
beforeDestroy() {
document.querySelector(".__panel").removeEventListener("scroll", this.loadMore,true);
},
修改之后就不报错了