第二次打开 $modal 会中断 ui-grid 维度计算
Opening $modal a second time breaks ui-grid dimension calculations
我有一个 angular-bootstrap $modal
里面有一个 ui-grid
指令。第一次打开模态没有问题。第二次,ui-grid 容器元素最初似乎都具有 0 的 offsetWidth/Height
,这搞乱了它的内部高度计算 - 网格没有正确呈现和父 div现在高了 400 像素。
使用 ui-grid auto-resizing 是可行的,但我很想避免这种消耗性能的事件。如果我必须使用它,我会去抖动它,无论如何我都可以,但我正在寻找更好的解释。
通过 CSS 将 width/height 应用于网格指令无效。
通过内联 style
应用 width/height 确实有效。
似乎是第二次,模态渲染速度比 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
,尺寸报告正确。
由于每次在初始加载后都会发生这种情况,所以正如您自己所说,这是一个时间问题。通过 setTimeout、debounce 或 ui-grid-auto-resizing.
解决
查看模式教程中的代码 - 它设置超时然后调用 grid.handleResize。这可能就是您所需要的。 http://ui-grid.info/docs/#/tutorial/110_grid_in_modal
我有一个 angular-bootstrap $modal
里面有一个 ui-grid
指令。第一次打开模态没有问题。第二次,ui-grid 容器元素最初似乎都具有 0 的 offsetWidth/Height
,这搞乱了它的内部高度计算 - 网格没有正确呈现和父 div现在高了 400 像素。
使用 ui-grid auto-resizing 是可行的,但我很想避免这种消耗性能的事件。如果我必须使用它,我会去抖动它,无论如何我都可以,但我正在寻找更好的解释。
通过 CSS 将 width/height 应用于网格指令无效。
通过内联 style
应用 width/height 确实有效。
似乎是第二次,模态渲染速度比 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
,尺寸报告正确。
由于每次在初始加载后都会发生这种情况,所以正如您自己所说,这是一个时间问题。通过 setTimeout、debounce 或 ui-grid-auto-resizing.
解决查看模式教程中的代码 - 它设置超时然后调用 grid.handleResize。这可能就是您所需要的。 http://ui-grid.info/docs/#/tutorial/110_grid_in_modal