【发布时间】:2019-12-06 03:11:58
【问题描述】:
我正在尝试使用 Vue 中的数据被动地设置包装器 div 的高度。数据是在加载包装器 div 的所有子级时设置的,然后设置为所有子级加在一起的总高度。基本上我希望包装器在 CSS 中根据其所有子级组合的高度具有固定的像素值。
我使用watch 来设置数据库内容加载后的高度。下面代码中的post 是数据库中的数组,其中包含当前组件应该渲染的帖子数据。
watch: {
post(){
this.$nextTick(() => {
this.setTotalHeight();
})
}
}
setTotalHeight() 方法如下所示:
setTotalHeight() {
this.totalHeight = this.$refs.top.offsetHeight + this.$refs.middle.offsetHeight + this.$refs.bottom.offsetHeight
}
我还在调整大小时触发setTotalHeight() 方法。
当这些函数运行时,totalHeight 数据值设置为setTotalHeight() 中的计算等于的数字。如果我查看开发工具,我可以看到该值,如果我在“DOM”中使用{{totalHeight}} 输出该值,我可以看到它的正确值。
但是,当我尝试通过 :style="{height: totalHeight}" 将此值应用于包装 div 时,它并没有更新。我最初将totalHeight 数据值设置为0,这就是设置的样式,而不会更改。
我是否做错了什么,或者为什么当数据本身正在更新时样式绑定没有更新,并且{{totalHeight}} 的“DOM”中的输出相应地更新?样式绑定不是响应式的还是可能导致这种情况的原因?
【问题讨论】:
标签: javascript vue.js