2013-10-07 4 views
0

Это моя первая работа с скриптами приложений Google, и я немного смущен тем, как обращаться к виджетам из нескольких функций.Сценарий Google Apps - обмениваться виджетами между функциями

В принципе, я хотел бы иметь кнопку, которая обновляет виджет label. Таким образом, у метки есть текст по умолчанию, но затем обновляется, чтобы показать другой текст после нажатия кнопки «Обновить».

Из того, что я прочитал, единственными вещами, которые могут быть переданы в обработчики событий, являются объекты с методом setName. У виджета label этого нет, так что я могу сделать, чтобы обновить значение виджета в моей функции doGet от функции другого обработчика?

Вот идея о том, что я хотел бы сделать (но не может добраться до работы):

function doGet() { 
    var app = UiApp.createApplication(); 

    // Create the label 
    var myLabel = app.createLabel('this is my label') 
    app.add(myLabel) 

    // Create the update button 
    var updateButton = app.createButton('Update Label'); 
    app.add(updateButton) 

    // Assign the update button handler 
    var updateButtonHandler = app.createServerHandler('updateValues'); 
    updateButton.addClickHandler(updateButtonHandler); 

    return app; 
} 

function updateValues() { 
    var app = UiApp.getActiveApplication(); 

    // Update the label 
    app.myLabel.setLabel('This is my updated label') 

    return app; 
} 

Я обыскивал интернет в течение нескольких часов, пытаясь найти решение, но может» Кажется, это выясняет. Какие-либо предложения?

ответ

1

Что вы упомянули о получении значения виджета из свойства имени объекта, - это получить значение виджета, а не устанавливать его. (В этом случае верхний регистр является не «рупор», а просто, чтобы получить внимание :-))

И пример этикетки обычно представляет собой пример виджета, который вы не можете прочитать значение ...

То, что вы ищете способ установить виджет значение: вы должны получить элемент по его ID: смотри пример ниже в вашем обновленном коде:

function doGet() { 
    var app = UiApp.createApplication(); 
    // Create the label 
    var myLabel = app.createLabel('this is my label').setId('label'); 
    app.add(myLabel) 
    // Create the update button 
    var updateButton = app.createButton('Update Label'); 
    app.add(updateButton) 
    // Assign the update button handler 
    var updateButtonHandler = app.createServerHandler('updateValues'); 
    updateButton.addClickHandler(updateButtonHandler); 
    return app; 
} 

function updateValues() { 
    var app = UiApp.getActiveApplication(); 
    // Update the label 
    var label = app.getElementById('label').setText('This is my updated label'); 
    return app; 
} 
+0

Боже мой, спасибо вам за это. Я абсолютно не мог найти документацию для этого где угодно. Слишком плохо, что Google не позволит передавать объекты метки непосредственно в функции обработки событий ... это похоже на гораздо более интуитивный процесс ... – user1636547

Смежные вопросы