第二次打开$ modal会破坏ui-grid尺寸计算

时间:2015-04-21 21:46:19

标签: angularjs angular-ui-grid angular-bootstrap

我有一个角度引导$modal,里面有ui-grid指令。第一次打开模态没有问题。第二次,ui-grid容器元素似乎最初都有offsetWidth/Height 0,这会弄乱它的内部高度计算 - 网格没有正确渲染,而父div现在400px更高。

使用ui-grid auto-resizing作品,但我渴望避免这种性能耗尽的事件。如果我不得不使用它,我会去辩论,无论如何我都可以,但我正在寻找更好的解释。

通过CSS将宽度/高度应用于网格指令并不起作用。

通过内联style应用宽度/高度确实有效。

似乎第二次,模态渲染速度比css可以应用得快?我不知道为什么会这样。

调试ui-grid内的元素宽度(使用offsetWidth / Height)总是在第一次显示正确的值,但后续的开头显示所有值为" 0"

使用Angular 1.3.15,angular-bootrstrap 0.12.1,ui-grid 3.0.0rc2

调用模态:

$modal.open({
    templateUrl: 'someModal.html',
    controller: 'SomeModalController'
});

模板有一些表单字段和指令:

<div style="width:367px;height:122px;" ui-grid="gridOptions" ui-grid-selection class="grid"></div>

在主要的ui-grid指令的post方法中,元素的offsetWidth / Height第二次总是为零,但如果我使用setTimeout进行10ms ,正确报告尺寸。

2 个答案:

答案 0 :(得分:0)

由于这是在每次初始加载后发生的,所以它与您自己说的一样,是时间问题。通过setTimeout,debounce或ui-grid-auto-resizing解决。

答案 1 :(得分:0)

看看模态教程中的代码 - 它设置超时然后调用grid.handleResize。这可能就是你所需要的。 http://ui-grid.info/docs/#/tutorial/110_grid_in_modal