버튼을 눌러 그리드의 요소를 새로 고치기 위해 서버 핸들러를 호출하는 매우 복잡한 스크립트를 작성했습니다.함수에 패널 위젯 전달하기
코드 재사용 및 일관된 동작을 위해 그리드의 초기 그리기 중에 해당 서버 처리기를 직접 호출하고 싶습니다. 서버 핸들러는 버튼을 누르면 호출되는
는, 모든 예상 위젯을 사용할 수 있습니다 내가 직접 함수를 호출하고 그것을 패널 변수를 전달하는 경우 e.parameter.widget 등
으로 조회 할 수 있습니다 e의 값은 'AbsolutePanel'입니다.
전체 패널과 함수에 포함 된 모든 위젯을 전달하는 addCallbackElement 방법을 에뮬레이트 할 수있는 방법이 있습니까?
또는 스크립트 시작시 자동으로 서버 처리기를 시작하는 방법은 무엇입니까?
아래의 구문 오류를 용서하십시오. 관련 코드에 500 줄의 코드를 정리했습니다.
감사
토니
function doGet() {
var app = UiApp.createApplication();
var mainPanel = app.createAbsolutePanel();
var monthsAbbr = ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'];
var Dates = Array();
var period = 5;
var dateHidden = Array();
var dayOfMonth = new Date(((period * 28) + 15887) * 86400000);
var dateString = '';
var dayOfWeek = 0;
for (var i=0; i<84; i++) {
dateString = dayOfMonth.getDate() + ' ' + monthsAbbr[dayOfMonth.getMonth()] + ' ' + (dayOfMonth.getFullYear() - 2000);
Dates [i] = dateString;
dateHidden[i] = app.createHidden('dates'+i, dateString).setId('dates'+i);
mainPanel.add(dateHidden[i]);
dayOfMonth = new Date(dayOfMonth.getTime() + 86400000);
}
var buttonReset = app.createButton('Reset').setId('buttonReset');
var handlerChange = app.createServerHandler('myHandlerChange');
handlerChange.addCallbackElement(mainPanel);
mainPanel.add(buttonReset.addChangeHandler(handlerChange));
app.add(mainPanel);
myHandlerChange(mainPanel);
return app;
}
function myHandlerChange(e) {
var app = UiApp.getActiveApplication();
Logger.log('Here are the widgets passed into the function: ' + Utilities.jsonStringify(e));
return app;
}
코멘트 ...'Utilities.jsonStringify (E)은 '불행하게도 함수가, – Tony