我知道,使用widget.getFullPath()方法,我们可以以"pagename.child1name.child2name....childNname.widgetname".格式的字符串形式检索小部件的完整路径我正在尝试找到一种使用此字符串访问原始小部件的方法。我成功地使用了这个:
app.pages"pagename".children"child1name".children"child2name"....children"childNname".children"widgetname".text =“一些文本”;
但我不知道如何在更一般的函数中改变这一点,独立于路径的深度。任何想法都将不胜感激。谢谢。
发布于 2019-07-13 05:39:12
父级根后代应该包含页面上的所有内容,因此请尝试:
widget.parent.root.descendants.ANYTHING.value;
如果您希望任何内容成为变量,则可能需要执行此操作
widget.parent.root.descendants[ANYTHING].value;
发布于 2019-07-13 14:08:12
我的目的是从另一个页面访问小部件的属性。小部件的根是它的页面,它是完整路径中第一个点之前的字符串。我最终编写了一个函数,它在将完整的路径字符串拆分到一个数组中后构建对象:
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';
不过,我有一种感觉,它不太像Javascriptian。
https://stackoverflow.com/questions/57012762
复制相似问题