2

我有一个需要一些电子表格数据的 UiApp 表单(检索缓慢)。我想要实现的是像往常一样加载视图,并在它显示后执行类似调用服务器处理程序的操作,该处理程序获取数据并在完成后更新我的视图。那可能吗?

我环顾四周,但什么也没找到。

据此 “函数doGet(e)是onLoad的GWT等价物”,但在我的情况下不是这样,因为我想显示页面,然后才做缓慢的部分......

4

2 回答 2

4

偶然发现了这个,我们可以用它来实现一个伪 onLoad 事件。

setValue复选框上的函数有一个可选参数来触发 valueChanged 处理程序。因此,您可以以编程方式触发 valueChanged 处理程序,该处理程序允许您在同时调用处理程序时返回应用程序(最初加载它)。

function doGet() {
  var app = UiApp.createApplication();

  var label = app.createLabel('Loading the data from the spreadsheet.')
                 .setId('statusLabel')
  app.add(label);

  var handler = app.createServerHandler('loadData');
  var chk = app.createCheckBox('test').addValueChangeHandler(handler).setVisible(false).setValue(true,true).setId('chk');
  app.add(chk);

  return app;
}

function loadData(e) {
  var app = UiApp.getActiveApplication();

  Utilities.sleep(3000); //placeholder for some function that takes a long time.

  var label = app.getElementById('statusLabel');
  label.setText("Loaded the data from the spreadsheet");

  return app;
}
于 2013-02-09T16:52:56.877 回答
0

其他几个小部件有setValue(value, fireEvents)方法,例如。TextBox等等。在实现这种技术时,小部件PasswordTextBox似乎没有什么独特之处。CheckBox

于 2014-08-08T10:43:24.613 回答