我意识到有几个类似的问题,我检查了它们,但它们似乎不能掩盖我的情况。
所以我有一个流畅的基于flexbox的布局。大部分窗口由container
块使用,当他的兄弟姐妹出现时会缩小。基本上像
<body>
<div class="menu"></div>
<div class="contact"></div>
<div class="container"></div>
</body>
container
高度不会直接更改,当我切换其他元素时,浏览器会重新计算,例如menu
。
我想看container
高度并重新计算指令中的一些元素。我注意它的高度
scope.$watch(()=>parentElement.prop('offsetHeight'), resize);
resize=()=>{console.log('resize called');};
问题是仅在下一个摘要上触发调整大小。所以当我第一次切换菜单没有任何反应时,第二次调用调整大小但是使用之前的(第一次调用)维度等等。
我意识到这很可能是因为浏览器调整大小不会触发摘要,但显示菜单的函数使用$ rootScope,因此应该进行一些摘要调用。
在这种情况下,有没有办法正确观察元素尺寸?
UPD:如果我删除监视过滤器并听取每个事件,我会在触发菜单时调整功能(显然它是rootScope引起的调用),但父元素高度仍然是旧的。也许有办法推迟观察者?理想情况下,不是超时,而是某种事件。