0

次のコードサンプルの動作について混乱しています。アプリオブジェクトを介してコールバックでstatusLabelUにアクセスできないのはなぜですか?

それは議論で利用可能です

ところで、コールバックの引数変数eのタイプは何ですか?

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

  var button = app.createButton('Enter Symbol');
  app.add(button);

  var symbolText = app.createTextBox().setName('symbolText').setId('symbolText');
  app.add(symbolText);

  var labelU = app.createLabel('Unknown symbol U')
                 .setId('statusLabelU');

  var labelK = app.createLabel('Unknown symbol K')
                 .setId('statusLabelK');
  app.add(labelU);
  app.add(labelK);

  var handler = app.createServerHandler('myClickHandler');

  handler.addCallbackElement(symbolText);
  button.addClickHandler(handler);

  return app;
}

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

  var symU = app.getElementById('symbolText');
  var symK = e.parameter.symbolText;

  var financeU = FinanceApp.getStockInfo(symU);
  var financeK = FinanceApp.getStockInfo(symK);

  var label = app.getElementById('statusLabelU');
  label.setText(financeU.name);

  var label = app.getElementById('statusLabelK');
  label.setText(financeK.name);

  app.close();
  return app;
}
4

3 に答える 3

1

あなたが実行する場合

labelU.setName('labelU');
handler.addCallbackElement(labelU);

次のように、コールバックでラベルの値にアクセスできます。

var value = e.parameter.labelU;

引数 'e' (または 'eventInfo') には、コールバックがトリガーされた方法に関する情報が含まれています。ユーザー ID、カーソルの x/y 位置、およびコールバックをトリガーしたソース要素に関する一般的な情報があります。それとは別に、ハンドラーに明示的に追加されたウィジェットからの値は、パラメーターとしてアクセスできます。を実行することで、いつでもコンテンツをチェックアウトできます。

Logger.log(e);

コーディング環境からログを確認します (cmd/ctrl + return)。

于 2014-10-05T05:40:12.987 に答える
0

実際には、アプリ オブジェクトを介してコールバックで statusLabelU にアクセスできます。addCallbackElementを介してイベントハンドラーにパラメーターとして渡す以外に、TextBoxの内容にアクセスするためにできないこと(少なくとも方法はわかりません)(コンテナーをaddCallbackElementに渡し、次にこのコンテナー内のすべての要素を渡すこともできます)イベントハンドラに渡されます)。あなたの例ではどうなりますか:

var symU = app.getElementById('symbolText');

TextBox の Proxy の一種を返します。これは、文字列 'Generic' に変換されたときに返されます。

FinanceApp.getStockInfo('Generic');

次に undefined を返します。これは、ラベル statusLabelU の Text として設定されます。

于 2012-12-28T11:38:01.913 に答える