0

我正在尝试在 UI 小部件中使用标签,但标签值在处理程序函数中不可用(返回“null”)。

它应该像那样工作(在这种情况下,它对我来说有点没用)还是我做错了什么?如果有人对 TAGS 有任何经验,我将不胜感激;-)

这是我用于测试的代码:

function doGet(e) {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var lbl = app.createTextBox().setWidth('400').setId('lbl');
  lbl.setText('empty').setTag('tag value');
  lbl.setText('original value = '+lbl.getTag());// this line to check that setTag / getTag is working as it should in the same function
  app.add(panel.add(lbl));
  var CH = app.createServerHandler('showtag').addCallbackElement(panel);
  lbl.addClickHandler(CH)

  return app;
}


function showtag(){
var app = UiApp.getActiveApplication();
var lbl = app.getElementById('lbl')
lbl.setText('new value = '+lbl.getTag());
return app
}

可以用这个链接测试

编辑:我在代码中添加了一行读取和写入 doGet 函数中的标签,只是为了测试......

编辑 2:Srik 的解决方案,就这么简单:

function showtag(e){
var app = UiApp.getActiveApplication();
var lbl = app.getElementById('lbl')
lbl.setText('from showtag value = '+e.parameter.lbl_tag);
return app
}
4

1 回答 1

4

好的。这里有一个小怪癖。在您的处理程序中,您可以通过以下方法访问标记值

function doGet(){
   ....
   var lbl = app.createTextBox().setWidth('400').setId('lbl');
   lbl.setText('empty').setTag('tag value');
   ....
}

function showtag(e){
  var tag = e.parameter.lbl_tag; /* I'm not sure if it us Tag or tag */
  ....
}
于 2012-08-06T16:27:43.903 回答