如何在 Vue 中处理窗口大小调整事件
要在 Vue 中处理 窗口大小调整事件 ,您有几个选择。
添加事件监听器
您可以为窗口注册一个事件监听器 resize
事件使用 addEventListener()
当 Vue 挂载组件时。
您还应该在卸载组件时清理事件侦听器。
这是使用 HTML 模板进行的现场演示:
const app = new Vue({
data: () => ({
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}),
mounted() {
window.addEventListener('resize', this.getDimensions);
},
unmounted() {
window.removeEventListener('resize', this.getDimensions);
},
methods: {
getDimensions() {
this.width = document.documentElement.clientWidth;
this.height = document.documentElement.clientHeight;
}
}
})
<div>
<p>The window width and height are respectively {{width}}, {{height}}</p>
</div>
窗口宽度和高度分别为 {{width}}, {{height}}
缺点是任何需要监听的组件 resize
event 需要注册全局事件。
这对于一次性来说很好,但如果多个组件需要听 resize
事件。 指令是一种替代方法,它使多个组件能够监听 resize
事件而不访问窗口。
创建一个 Vue 指令
与 创建自定义滚动事件 ,您可以创建用于调整窗口大小的指令。
Vue.directive('resize', {
inserted: function(el, binding) {
const onResizeCallback = binding.value;
window.addEventListener('resize', () => {
const width = document.documentElement.clientWidth;
const height = document.documentElement.clientHeight;
onResizeCallback({ width, height });
})
}
});
const app = new Vue({
data: {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
},
methods: {
setDimensions: function({ width, height }) {
this.width = width;
this.height = height;
}
},
template: `
<div>
<div v-resize="setDimensions">
<p>the width and height are respectively {{width}}, {{height}} </p>
</div>
</div>
`
});
这是使用 HTML 模板进行的现场演示:
<div>
<div v-resize="setDimensions">
<p>The window width and height are respectively {{width}}, {{height}} </p>
</div>
</div>
窗口宽度和高度分别为 {{width}}, {{height}}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 将 HTML 转换为 Pug
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论