0

我想在另一个服务器处理程序中更改回调函数。我收到响应“无法在对象 Generic 中找到函数 setCallbackFunction。” 由于 app.getElementById('treeHandler').setCallbackFunction('noSelection'); 而处理程序在主线中定义为 var handler = app.createServerHandler('nameSelected').setId('treeHandler'); 所以看起来我们无法在服务器处理程序中获取 ServerHandler 类型的元素。

这是预期的行为吗?

4

2 回答 2

0

那是对的; 您无法将它们取回并对其进行任何处理。

于 2012-11-20T00:35:58.590 回答
0

这并不完全正确,您可以向应用程序添加隐藏元素。只需通过使用 createHidden 而不是 createTextBox 来采用下面的 axmaple。

function doGet() {
   var app = UiApp.createApplication();
   var textBox1 = app.createTextBox().setName("textBox1");
   var textBox2 = app.createTextBox().setId("textBox2");
   app.add(textBox1);
   app.add(textBox2);
   var textBox3 = app.createTextBox().setName("textBox3");
   var panel = app.createFlowPanel();
   panel.add(textBox3);
   app.add(panel);
   var button = app.createButton("a button");
   var handler = app.createServerHandler("handlerFunction");
   handler.addCallbackElement(textBox1)
       .addCallbackElement(textBox2)
       .addCallbackElement(panel)
   button.addClickHandler(handler);
   app.add(button);
   return app;
 }

 function handlerFunction(eventInfo) {
   var parameter = eventInfo.parameter;
   // There's a lot of information in 'parameter' about the event too, but we'll focus here
   // only on the callback elements.
   var textBox1 = parameter.textBox1;  // the value of textBox1
   var textBox2 = parameter.textBox2;  // undefined! setId is not the same as setName
   var textBox3 = parameter.textBox3;  // works! the parent "panel" was a callback element
 }

来源:https ://developers.google.com/apps-script/class_serverhandler#addCallbackElement

于 2013-02-15T22:50:21.680 回答