자주 GAS 사용자 (me too)는 ServerHandler.addCallbackElement 방법을 사용하지 않거나 모든 제어를 포함하지 않는 방식으로 사용하십시오.ServerHandler.addCallbackElement 메소드를 가지고있는 배경은 무엇입니까?
이 방법을 사용하는 배경 정보는 무엇입니까? 왜 GAS 개발자들이 그것을 도입 했습니까? 모든 입력 위젯 값을 모든 서버 핸들러에 매개 변수로 전달하는 것이 더 간단합니까?
documentation은 이러한 질문에 대한 답을 제공하지 않습니다. 콜백 소자 제어 상이한 세트를 처리 할 핸들러의 여러 경우 GAS 브라우저와 서버 사이의 트래픽을 감소시키기 때문에
난 다음 원인
- 추가 위젯 참조. 여기에 질문이 있습니다. 얼마나 많은 트래픽을 절약 할 수 있습니까? 나는 최대 몇 킬로 바이트, 보통 수백 바이트라고 생각한다. 현대 인터넷 연결 속도, 심지어 모바일 연결을 고려하면 가치가 있습니까?
- 폼에는 여러 단추가있는 표와 유사한 편집 컨트롤이 포함되어 있으며 같은 이름의 행 요소를 처리하는 것이 편리합니다. 이 문제는
tags
을 사용하면 쉽게 피할 수 있습니다. 다음 예제를 참조하십시오. 태그가 다른 용도로 사용되는 경우 소스 버튼 ID를 구문 분석하고 행 번호를 추출하는 데 문제가되지 않습니다. - 무대 뒤에서 사용되는 기술의 한계. 그러한 한계가 있다면, 그것들은 무엇입니까?
function doGet(e) {
var app = UiApp.createApplication();
var vPanel = app.createVerticalPanel();
var handler = app.createServerHandler("onBtnClick");
var lstWidgets = [];
for (var i = 0; i < 10; i++) {
var hPanel = app.createHorizontalPanel().setTag('id_' + i);
var text = app.createTextBox().setName("text_" + i);
text.setText(new Date().valueOf());
var btn = app.createButton("click me").addClickHandler(handler);
btn.setTag(i).setId('id_btn' + i);
var lbl = app.createLabel().setId("lbl_" + i);
hPanel.add(text);
hPanel.add(btn);
hPanel.add(lbl);
lstWidgets.push(text);
lstWidgets.push(btn);
vPanel.add(hPanel);
}
// The addCallbackElement calls simulate situation when all widgets values are passed to a single server handler.
for (var j = 0; j < lstWidgets.length; j++) {
handler.addCallbackElement(lstWidgets[j]);
}
app.add(vPanel);
return app;
}
function onBtnClick(e) {
var app = UiApp.getActiveApplication();
var i = e.parameter[e.parameter.source + '_tag'];
var lbl = app.getElementById("lbl_" + i);
lbl.setText("Source ButtonID: " + e.parameter.source + ', Text: ' + e.parameter["text_" + i]);
return app;
}
질문은 UIapp가 이러한 방식으로 설계된 이유였습니다. (내가 이해 한대로) –
아마도 uiapp는 요소 자체가 아니기 때문일 수 있습니다. 따라서 요소의 이름을 지정해야합니다. 모든 HTML 물마루를 페이지의 버튼에 보내면 동일합니다. 하지만 첫 번째 태그에 충돌이 있습니다. – Thomas
@Sergeinsas는 완전합니다.나는 왜 UIapp가 이런 식으로 설계되었는지 궁금하다. – megabyte1024