2013-02-09 41 views
2

我有一個需要一些電子表格數據(檢索速度慢)的UiApp表單。我想要實現的是像往常一樣加載視圖,並在顯示後執行一些操作,例如調用服務器處理程序來獲取數據並在完成後更新視圖。那可能嗎?加載UiApp後調用函數(Javascript onLoad等效)

我環顧四周,但沒有找到任何東西。

this,「功能的doGet(E)是GWT等價的onLoad的」,但它不是我的情況,我想dispay頁面,做緩慢的部分...

回答

4

Stumbled on this然後我們可以使用它來實現一個pseudo-onLoad事件。

複選框上的setValue函數有an optional parameter來觸發valueChanged處理函數。因此,您可以通過編程方式觸發valueChanged處理函數,該函數允許您在處理程序同時被調用時返回應用程序(最初加載它)。

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

    var label = app.createLabel('Loading the data from the spreadsheet.') 
       .setId('statusLabel') 
    app.add(label); 

    var handler = app.createServerHandler('loadData'); 
    var chk = app.createCheckBox('test').addValueChangeHandler(handler).setVisible(false).setValue(true,true).setId('chk'); 
    app.add(chk); 

    return app; 
} 

function loadData(e) { 
    var app = UiApp.getActiveApplication(); 

    Utilities.sleep(3000); //placeholder for some function that takes a long time. 

    var label = app.getElementById('statusLabel'); 
    label.setText("Loaded the data from the spreadsheet"); 

    return app; 
} 
+0

這真是一個好;-)也許你可以加一點關於[複選框的軟觸發能力]的解釋(https://developers.google.com/apps-script/class_checkbox?hl=en# setValue)你使用的是 – 2013-02-09 19:37:13

+0

聰明的解決方法,像魅力一樣工作。謝謝! – 2013-02-09 20:33:52

0

其他幾個小部件有setValue(value, fireEvents)方法,例如。 TextBox,PasswordTextBox等等。看起來好像沒有什麼獨特的關於CheckBox部件在實現這種技術。