由于GAS文档实际上很糟糕,我想我可能会尝试至少发现有关传递给偶数处理程序的参数的信息。这个简单的例子显示了我想要做的事情。
MyGui是使用Gui-builder构建的 它包含一个按钮 - btn,它有一个点击回调 - btn_click 它还包含TextArea - txtArea1
simples
function doGet() {
var app = UiApp.createApplication();
app.add(app.loadComponent("MyGui"));
return app;
}
function btn_click(e) {
var app = UiApp.getActiveApplication();
var ta = app.getElementById('txtArea1');
if(!e)
{
ta.setText('null object');
}
else
{
ta.setText(e.toDebugString());
}
return app;
}
傻傻的我!我假设由于文档重复声明GAS组件是基于GWT构建的,而GWT是基于Java的,所以EVERYTHING是一个java.lang.Object,我应该能够调用toDebugString()来查找至少一些关于对象传递给处理函数。
抱歉,我非常接近放弃使用GAS,它现在只是一个玩具,我没时间玩,我实际上有工作要做。
答案 0 :(得分:1)
我记得有一个库SmartDebug,它允许在ui中记录对象。添加库并尝试:
function doGet() {
var app = UiApp.createApplication();
SmartDebug.enable(true);
SmartDebug.addLogWidgetToApplication();
app.add(app.loadComponent("MyGui"));
return app;
}
function btn_click(e) {
var app = UiApp.getActiveApplication();
if(!e) {
SmartDebug.logMessage('null');
} else {
SmartDebug.logObject(e,'event');
}
return app;
}
这是我得到的:
11:19:55: event.parameter.clientY: 161
11:19:55: event.parameter.clientX: 143
11:19:55: event.parameter.eventType: click
11:19:55: event.parameter.ctrl: false
11:19:55: event.parameter.meta: false
11:19:56: event.parameter.source: Button1
11:19:56: event.parameter.button: 1
11:19:56: event.parameter.alt: false
11:19:56: event.parameter.screenY: 270
11:19:57: event.parameter.screenX: 143
11:19:57: event.parameter.y: 18
11:19:57: event.parameter.shift: false
11:19:57: event.parameter.x: 92
答案 1 :(得分:1)
UiApp的客户端是GWT小部件。我们没有任何地方声明服务器端是由GWT Java对象组成的(它不是),甚至根据它们如何记录工作也没有意义。服务器对象只不过是对客户端对象的引用 - 可用于将命令与之关联的引用,然后将其传送到客户端。没有调试信息,因为服务器“小部件”除了存储命令的客户端小部件的id之外没有其他信息。
答案 2 :(得分:0)
您是否在GUI Builder中为按钮添加了回调元素?如果您将按钮放在FormPanel中,FormPanel的所有字段都作为参数提交,如果它是一个简单的按钮,您必须添加回调元素以获取GUI Builder中的事件参数,即触发事件下的小白框在活动上。
答案 3 :(得分:0)
您可以使用标准的Javascript toSource方法来调试某些对象。如果你调试在创建新的web-app脚本时给出的默认示例代码,这就是toSource给你的:
({parameter:{clientY:“22”,clientX:“17”,eventType:“click”,ctrl:“false”,meta:“false”,source:“u29169455861”,button:“1”, alt:“false”,screenY:“148”,screenX:“381”,y:“18”,shift:“false”,x:“13”}})