ng-if,md-虚拟重复高度计算的问题



将ng-if与md-virtual-repeat一起使用似乎会破坏md-virtual-repeat的高度计算。 md-virtual-repeat似乎适用于ng-show,但是,我在网格磁贴中使用md-virtual-repeat作为网格列表的一部分; ng-show 隐藏网格磁贴,但磁贴仍然占用与未隐藏相同的空间。关于解决方法的任何想法?

编辑:很抱歉解释不好,我脑子里更清楚了。请参阅代码笔:http://codepen.io/sweatherly/pen/rLYPvE

ng-if="$mdMedia('md')"

问题似乎出在 md 标签上。如果将屏幕大小减小到中等并刷新,则每个选项卡中都会显示 md 列表。但是,如果从 lg 屏幕开始,然后在不刷新的情况下减少到 md,则不会显示行。我添加了一个带有 ng-show 而不是 ng-if 的网格磁贴,以演示网格磁贴在隐藏而不是从 DOM 中删除时如何仍然占用相同的空间。

嵌套在网格磁贴下的一些元素的高度设置为 100%,但是,发生此问题时,其中许多元素的高度为 0px。似乎在准确设置父母的身高之前正在计算身高。我猜在父级上设置固定高度可能会解决这个问题,但是,一个固定高度并不适合所有屏幕尺寸。

我在CSS中定位了错误的元素。我通过定位每个 md-tab 的 id 来设置高度(例如 #tab-content-0、#tab-content-1 等)。Ng-if删除并创建了更多的md-tabs,因此新标签具有新的,不同的id(例如 #tab-content-2,#tab-content-3等)。
我找到的解决方案是投下更广泛的网络并使用元素而不是 id:

md-tab-content .md-virtual-repeat-container {
  height:calc(100% + 48px);
}
md-tab-content > div {
  height: calc(100%);
}

新代码笔:http://codepen.io/sweatherly/pen/pbpKZO

最新更新