我结束了解决这个问题,使用jQuery PubSub,UI布局的访问器方法和SlickGrid的resizeCanvas()
方法的组合。它似乎工作得很好。
注意:我的项目已经在使用pubsub了,我使用RequireJS加载我的模块。
所以,在我的网格模块文件,我订阅接收它生活在窗格中,它保存到一个局部变量的新innerHeight的方法,然后调用我的resize();
功能:
$.subscribe("units/set_grid_height", function (new_height) {
grid_opts.height = new_height;
resize();
});
// ...
// grid = the jQuery element that represents the SlickGrid
// slick = the instantiated slickgrid
function resize() {
grid.css('height', grid_opts.height);
slick.resizeCanvas();
}
然后在我的init JS文件(在布局定义),我设置了正确的出版为初始状态,每次中心窗格中的变化:
layout = $('body').layout({
center: {
onresize: function (name, el, state, opts, layout_name) {
$.publish("units/set_grid_height", [state.innerHeight]);
}
}
});
$.publish("units/set_grid_height", [layout.state.center.innerHeight]);
这似乎做的正是我想要的。我知道这不是一个通用的解决方案,但它看起来并不像SlickGrid可以独立完成所有这些。
如何使用autoHeight设置?它可能比这个问题更新... – w00t 2011-11-17 15:33:29