2012-11-19 95 views
0

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

这是预期的行为?

回答

0

这是正确的;你不能让他们回来,并与他们做任何事情。

+0

由于科里组成,其中获取并设置工作/不工作,将有助于一张小桌子。 – DavidF

+0

任何小部件应该可检索。 Offhand除了处理程序之外,我无法想到其他任何东西。 –

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

相关问题