0

タイトルがわかりにくい場合は、これで私がやろうとしていることがより明確になることを願っています。

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

  var list = app.createListBox().setName('list');
  list.addItem("this");
  list.addItem("that");
  list.addItem("they");

  var handler = app.createServerHandler('foo').addCallbackElement(list);
  list.addChangeHandler(handler);

  var label = app.createLabel("test").setId('label');

  var panel = app.createVerticalPanel();
  panel.add(list); 
  panel.add(label);
  app.add(panel);

  return app;
}​

function foo(e) {
  var app = UiApp.getActiveApplication();
  var value = e.parameter.list;
  var label = app.getElementById('label');
  label.setText(value);
}

エラーは発生しません。意図的にエラーを入れた場合foo、エラーメッセージが表示されるので、ハンドラーが呼び出され、何もしていないと想定しています。これは、スプレッドシートでを表示するだけで機能するBrowser.msgBox(value)ので、多くの機能があることを知っています。

最初のリストボックスで選択されたものに基づいて、ページ上のすべてのリストボックスを自動的に更新するプログラムでこれを使用しようとしています。サーバーハンドラーやを使用して可視性などを変更できましたがapp.getElementById、リストボックスではなくラジオボタンのみを使用しました。私は明らかにここで何か間違ったことをしていますが、それが何であるかは明らかではありません。

4

1 に答える 1

4

To have your changes to the UiApp updated you have to return the app on your handler, e.g.

  //...
  label.setText(value);
  return app;
}
于 2012-06-02T03:10:13.233 に答える