2012-11-19 44 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

相關問題