如何使用小部件全路径访问小部件的属性?

时间:2019-07-12 19:05:52

标签: google-app-maker

我知道,使用widget.getFullPath()方法,我们可以将字符串的完整路径检索为字符串,格式为“ pagename.child1name.child2name .... childNname.widgetname”。 我正在尝试找到一种使用此字符串访问原始窗口小部件的方法。 我成功使用了它:

app.pages [“ pagename”]。children [“ child1name”]。children [“ child2name”] .... children [“ childNname”]。children [“ widgetname”]。text =“ some text”;

但是我不知道如何通过更通用的功能来改变它,而与路径的深度无关。 任何想法将不胜感激。谢谢。

2 个答案:

答案 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语言。