我想在另一个服务器处理程序中更改回调函数。我得到一个响应“无法在对象Generic中找到函数setCallbackFunction”。后果 app.getElementById( 'treeHandler')setCallbackFunction( 'NOSELECTION'); 而处理程序在主线中定义为 var handler = app.createServerHandler('nameSelected')。setId('treeHandler'); 因此看起来我们无法在服务器处理程序中获取ServerHandler类型的元素。
这是预期的行为吗?
答案 0 :(得分:0)
这是正确的;你无法让他们回来并为他们做任何事情。
答案 1 :(得分: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