我有一个afterRender函数,它有一个事件侦听器,当用户向下滚动页面时,它会将固定的类添加到元素中。将元素固定到页面上会创建一个间隙,使所有后续元素看起来像是“跳起来”。我的想法是创建一个空的div,它将具有固定div的高度,并在scroll事件发生时取而代之,以便删除“跳转”。
我的问题是,当我在事件执行时在控制台中检查chpCard组件(请参阅'chpTarget‘变量)时,元素似乎呈现为没有宽度/高度。我已经检查了它的offsetHeight和它的reders到0。但是,一旦Lightning完成,当我再次检查它时,我得到了具有正确值的offsetHeight。所以我的问题是:我应该如何获得高度?afterRender不是意味着DOM中的一切都已准备就绪可以使用了吗?为什么它呈现为0 height元素?
这是CMP:
<lightning:card class="slds-page-header slds-page-header_object-home" aura:id="chpCard">
<p>Lorem Ipsum</p>
<p>Lorem Ipsum</p>
<p>Lorem Ipsum</p>
</lightning:card>
这是render方法
afterRender: function(component, helper) {
this.superAfterRender();
window.addEventListener('scroll', function (event) {
var chpTarget = component.find('chpCard');
var wrapper = component.find('chpWrapper');
if (event.srcElement.documentElement.scrollTop > 12) {
$A.util.addClass(chpTarget, 'slds-is-fixed');
} else {
$A.util.removeClass(chpTarget, 'slds-is-fixed');
}
});
}
我希望在这些元素的真值存在的地方,闪电会生成某种虚拟的DOM,但我不会屏住呼吸。:S
https://stackoverflow.com/questions/51072576
复制相似问题