多少个回调元素?

时间:2012-07-06 05:34:35

标签: google-apps-script

考虑以下简单的代码

function doGet(){
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var handler = app.createServerHandler('click').addCallbackElement(panel);
  var btn = app.createButton('Click', handler);

  panel.add(button);
  app.add(panel);
  return app;
}

只有一个面板,回调元素是单独的面板。但是,当您有许多面板用于不同目的时,更好的方法是 - 添加多个回调元素或将所有各种面板添加到单个“主”面板中,并将主面板添加为回调元素。 这些方法的优点和缺点是什么?

下面的一些代码示例

选项1:

function doGet(){
  ...
  var panel1 = app.createVerticalPanel();
  var panel2 = app.createVerticalPanel();

  var handler = app.createServerHandler('click')
     .addCallbackElement(panel1) 
     .addCallbackElement(panel2) ; // Notice two callback elements added here 
  var btn = app.createButton('Click', handler);

  ...
  return app;
}

选项2:

function doGet(){
  ...
  var masterPanel = app.createVerticalPanel();
  var panel1 = app.createVerticalPanel();
  var panel2 = app.createVerticalPanel();

  var handler = app.createServerHandler('click')
     .addCallbackElement(masterPanel) ;

  var btn = app.createButton('Click', handler);

  masterPanel.add(panel1).add(panel2); // Master panel has both panels added to it      
  ...
  return app;
}

一种选择比另一种更好吗?

1 个答案:

答案 0 :(得分:2)

选项2更容易在脚本中写入;-)并且确保您不会忘记(最终)长回调列表中的某些内容。

但两者都是一样的。