这是我的做法:
创建一个执行您当前希望在beforeexpand
事件上发生的渲染/修改逻辑的函数。
在此函数中,在面板上设置自定义属性,以便您知道它是根据您的逻辑呈现/修改的,例如myPanel.isPrepared = true;
.
此外,在此函数的最后,再次调用myPanel.expand();
然后,在beforeexpand
处理程序中放置一个条件来检查您的渲染/修改是否已完成,例如,if (myPanel.isPrepared) {...
如果它通过了,那么不要在处理程序中做任何事情,让面板展开。
如果它没有通过,则调用上面提到的函数,然后return false;
将停止面板扩展,您的函数将执行您想要的所需渲染/修改,然后它会在全部完成后调用 expand。
假设您没有使用 MVC 模式创建应用程序,则处理程序和函数可能如下所示:
myPanel.on('beforeexpand`, function() {
if (!myPanel.isPrepared) {
prepareMyPanel();
return false;
}
})
function prepareMyPanel() {
// rendering / modification logic here...
myPanel.isPrepared = true;
myPanel.expand();
}
如果您使用 MVC 模式创建应用程序,您应该能够将其转换为正确的控制器处理程序。