我放置了 scrollIntoView()
以使我的网格滚动可见。当我在 gridContainer 中添加新网格时,我使用了这种方法。这是有效的,我可以从调试器中检查。
我的 scrollIntoView()
grid.body.dom.scrollIntoView();
但是一旦它到达 defer 函数,它就不会 scrollIntoView()
运行。任何人都可以建议如何跳过这个。 defer 做什么以及如何跳过它。我也在使用 grid.focus()
并且再次发生同样的事情。网格正在进入 View ,但在从调试器中出来后没有显示在 View 中。
defer: function(fn, millis, scope, args, appendArgs) {
fn = Ext.Function.bind(fn, scope, args, appendArgs);
if (millis > 0) {
return setTimeout(function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(fn);
} else {
fn();
}
}, millis);
}
fn();
return 0;
},
最佳答案
解决方法是不滚动到组件,而是使用 card layout用于中心容器并在另一张卡片上显示新网格。
var centerCt; // reference to your center container
var centerLayout = centerContainer.getLayout();
var newGrid = Ext.create('Ext.grid.Panel', {});
centerCt.add(newGrid);
centerLayout.setActiveItem(newGrid);
我创建了一个 Sencha Fiddle .
关于javascript - defer 到底做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930900/