指令

时间:2016-09-07 13:50:48

标签: javascript angularjs anguarjs-digest-cycle

我意识到有几个类似的问题,我检查了它们,但它们似乎不能掩盖我的情况。 所以我有一个流畅的基于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引起的调用),但父元素高度仍然是旧的。也许有办法推迟观察者?理想情况下,不是超时,而是某种事件。

0 个答案:

没有答案