我正在尝试在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
}
可以测试with this link
编辑:我在代码中添加了一行,用于在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
}
答案 0 :(得分: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 */
....
}