【发布时间】:2018-03-02 22:12:18
【问题描述】:
我有一个使用引导网格的 Vue 组件。在子组件中,我想获取控制器中某个 div 的当前宽度。
这里是子组件:
<template>
<div id="bg-prev" ref="prev">
<h1>{{x}}</h1>
</div>
<template>
export default {
props: ['section'],
data() {
return {
x: 0,
y: 0,
}
},
mounted() {
this.getWindowWidth();
},
methods: {
getWindowWidth() {
this.x = this.$refs.prev.clientWidth;
}
}
};
<style>
#bg-prev {
width: 100%;
}
</style>
在此示例中,宽度始终为 0,即使在我检查元素时该元素具有明确的宽度。我在这里缺少什么,挂载的钩子是 vue 生命周期中最新的钩子,对吗?任何帮助表示赞赏;)
【问题讨论】:
-
在我的 jsfiddle 中似乎工作正常,检查一下:jsfiddle.net/ikbelkirasan/d18bosh6/1
-
这真的很奇怪,但在我的示例中,该组件是一个子组件。可能是因为子组件在父组件之前挂载,所以指向父组件的 100% 的宽度还不存在。
-
您真的想创建可重现的演示。我可能知道为什么会发生,但是我需要自己创建演示来验证。所以你真的可以通过创建一个演示让它变得更简单。
标签: javascript vue.js vuejs2 vue-component vue-router