我知道,使用widget.getFullPath()方法,我们可以将字符串的完整路径检索为字符串,格式为“ pagename.child1name.child2name .... childNname.widgetname”。 我正在尝试找到一种使用此字符串访问原始窗口小部件的方法。 我成功使用了它:
app.pages [“ pagename”]。children [“ child1name”]。children [“ child2name”] .... children [“ childNname”]。children [“ widgetname”]。text =“ some text”;
但是我不知道如何通过更通用的功能来改变它,而与路径的深度无关。 任何想法将不胜感激。谢谢。
答案 0 :(得分:0)
父级根后代应该在页面上包含所有内容,因此请尝试:
widget.parent.root.descendants.ANYTHING.value;
如果您希望将任何内容都设为变量,则可能需要执行此操作
widget.parent.root.descendants[ANYTHING].value;
答案 1 :(得分:0)
我的意图是从另一个页面访问窗口小部件的属性。小部件的根是其页面,它是完整路径中第一个点之前的字符串。 我最终编写了一个函数,该函数在将完整路径字符串拆分为数组后,将生成对象:
function getWidgetPath(pathString) {
var pathArray = pathString.split('.');
var widgetPath = app.pages[pathArray[0]];
for( i=1; i<pathArray.length; i++ ) {
widgetPath = widgetPath.children[pathArray[i]];
}
return widgetPath;
}
该函数可用于构建目标对象。也就是说,考虑到目标小部件是标签,并且我想更改其文本属性,因此我使用:
var targetPath = 'parentpage.panel1.panel2.panel3.label1';
var targetWidget = getWidgetPath(targetPath);
targetWidget.text = 'some text';
不过,我觉得它不是Java语言。