我有一个接口,它调用一个脚本,使用从其他电子表格中获取的数据创建电子表格。我希望界面在运行时更新它的标签,以便给用户提供视觉反馈,让他知道脚本正在运行,没有卡住。当我尝试更新放在接口中的标签时,它不是第一次更新,而是在myFunction()到达它的末尾之后正确地更新。这意味着我可以看到消息“创建完成”,但消息“正在创建文件...”从未显示过。此外,按钮buttonCompile永远不会被禁用,因此似乎根本不会执行myFunction()之前的指令。如何在myFunction()开始执行之前更新标签并禁用按钮?(我已经仔细检查了变量引用)
function doGet() {
var app = UiApp.createApplication();
app.add(app.loadComponent("File creation"));
var buttonCreate = app.getElementById('createBtn');
var handlerCrea = app.createServerHandler('createClickHandler');
buttonCreate.addClickHandler(handlerCreate);
return app;
}
function createClickHandler(e) {
var app = UiApp.getActiveApplication();
var label = app.getElementById('createLbl');
label.setText("Creating file...");
var buttonCompile = app.getElementById('compileBtn');
buttonCompile.setEnabled(false);
myFunction();
label.setText("Creation completed.");
buttonCompile.setEnabled(true);
app.close();
return app;
}发布于 2012-10-08 17:20:18
此行为的原因是GUI仅在离开处理程序后才会更新。解决方法是使用两个处理程序。第一个代码将标签文本设置为Creating file...并禁用按钮,第二个代码执行myFunction函数,将文本更改为Creation completed,并禁用按钮。下面是一个例子。它禁用/启用该按钮,worker处理程序只需等待5秒。
function doGet(e) {
var app = UiApp.createApplication();
var container = app.createHorizontalPanel().setId('container');
var btnPerformance = app.createButton("Performance Demo").setId('btnPerformance');
var handlerPerformance = app.createServerHandler('onBtnPerformanceClick');
var handlerWait = app.createServerHandler('onWait');
btnPerformance.addClickHandler(handlerPerformance);
btnPerformance.addClickHandler(handlerWait);
container.add(btnPerformance);
app.add(container);
return app;
}
function enableControls(enable) {
var lstControls = [ 'btnPerformance' ];
var app = UiApp.getActiveApplication();
for (var i = 0; i < lstControls.length; i++) {
var ctl = app.getElementById(lstControls[i]);
ctl.setEnabled(enable);
}
}
function onWait(e) {
enableControls(false);
return UiApp.getActiveApplication();
}
function onBtnPerformanceClick(e) {
Utilities.sleep(5000);
enableControls(true);
return UiApp.getActiveApplication();
}https://stackoverflow.com/questions/12778016
复制相似问题