1

我试图找出回调函数的来源,但e.parameter.source尚未定义。

我用来创建回调事件的代码是:

var temp_handler = app.createServerHandler("do_things");
container.add(app.createButton(s_list[i][2]).setId("goto_"+s_list[i][1]).addClickHandler(temp_handler));
container.add(app.createLabel("goto_"+s_list[i][1]));

container稍后添加到应用程序的位置。

被调用的函数的第一部分是:

function do_things (e)
{
  var app = UiApp.getActiveApplication();
  Logger.log(e.parameter);
  var src = e.parameter.source;

由此,我已经能够说的e.parameter是:

{clientY=61, clientX=38, button=1, alt=false, eventType=click, screenY=278, ctrl=false, screenX=493, y=11, shift=false, meta=false, x=34}

这不包括source. 我觉得这很奇怪,因为据我所知,同一文件中的其他回调函数已经能够e.parameter.source毫无问题地访问和使用。

有谁知道我在这个回调中做错了什么,导致源参数无法访问?

4

3 回答 3

2

其他答案对我来说没有多大意义。

首先,因为参数是由生成事件source的元素填充的,而不是它的.idname

它也是自动填充的,不需要addCallbackElement,这是通过它们访问小部件内容所必需的name。最后,name为 a设置 alabel仅在您为其设置标签时才有用,因为标签没有“内容”。

综上所述,我能想象的唯一问题是,如果您id在另一个小部件上设置相同并且它与您原来的小部件(按钮)相混淆。但我还没有测试过。

于 2012-06-25T11:51:12.167 回答
1

您只是忘记为 Label 小部件命名。e.parameter 返回的值按名称分配给小部件。

ID 用于在需要修改时从 UiApp 创建函数外部访问小部件。

于 2012-06-25T05:26:09.150 回答
0

除了 Serge 回答的内容之外,您可能还想在处理程序上提供一个回调元素,使用

 ServerHandler.addCallbackElement()
于 2012-06-25T05:40:06.923 回答