2014-12-02 35 views
5

我最近开始使用angular ui-layout
我有一个3窗格视图。最右边的窗格是可选的,并且仅在有时显示,我隐藏并用ng-if显示。Angular UI布局 - 如何更改大小时,一些东西改变?

如果ng-if的计算结果为false,则不会重新计算大小,并且中间窗格不会占用其余的水平空间。

<ui-layout options="{ flow: 'column' }"> 
    <div ui-layout-container size="15%"> sidebar </div> 
    <div ui-layout-container min-size="65%"> main </div> 
    <div ui-layout-container ng-if="haveSelected()" size="20%"> props </div> 
</ui-layout> 

如果ng-if是假的,主要采取了所有空间侧边栏之后,如果为真,为第三窗格的空间分配正确的,但如果它再次变为假,空间不回收。

想法?

+1

你有没有解决这个? – 2015-01-22 15:00:44

+0

我遇到同样的问题。 只有稍微调整浏览器大小时才刷新。 实际上div的css宽度没有得到更新。 请让我知道是否有人找到任何解决方案呢。 – Rezoan 2016-04-09 11:03:15

回答

0

我更喜欢更好的解决方案,但是您可以将ng-if测试放在两个div之间,ui-layout元素使用相反的布尔评估。这对我的情况来说并不是那么糟糕,因为我正在使用Jade

例子(玉):

ui-layout(options="{ flow: 'column' }", ng-if="showThirdPanel") 
    div(ui-layout-container) 
    include ./firstPanel.jade 
    div(ui-layout-container) 
    include ./secondPanel.jade 
    div(ui-layout-container) 
    include ./thirdPanel.jade 
ui-layout(options="{ flow: 'column' }", ng-if="!showThirdPanel") 
    div(ui-layout-container) 
    include ./firstPanel.jade 
    div(ui-layout-container) 
    include ./secondPanel.jade