3 回答
TA贡献1785条经验 获得超4个赞
我在Vue上学到的一个便宜技巧是,如果模板中需要安装模板时未加载的任何内容,则只需在模板上放置v-if:
<template v-if="$refs">
<div ref="div1" :style="{ maxHeight: getMaxHeight($refs.div1) }"></div>
</template>
周围。乍一看可能很脏,但事实是,它可以完成工作,而不会增加额外的代码和时间,并避免了错误。
此外,您的expandable-函数的代码长度也有小幅改进:
const expandable = el => el.style.maxHeight =
( el.classList.contains('expanded') ?
el.children.map(c=>c.scrollHeight).reduce((h1,h2)=>h1+h2)
: 0 ) + 'px';
TA贡献1794条经验 获得超7个赞
制作直接在div元素上运行的自定义指令可能是您的最佳选择。您可以创建一个指令组件,例如:
export default {
name: 'maxheight',
bind(el) {
const numberOfChildren = el.children.length;
// rest of your max height logic here
el.style.maxHeight = '100px';
}
}
然后只需确保将指令导入您计划使用的文件中,并将其添加到div元素中:
<div ref="div1" maxheight></div>
添加回答
举报