Google app maker 从列表对象获取选择

Google app maker 从列表对象获取选择,google-app-maker,Google App Maker,appmaker中有一个表,我添加了复选框,如下所示: 我想从用户检查的实体获取电子邮件列表。此时,我甚至无法访问单个复选框的状态。这是我尝试添加到按钮的当前代码段: console.log(widget.parent.parent.parent.children.Panel1.children.Table3Panel.children.Table3.children.Table3Body.children.Table3Row.children.UserSelectionCheckbox.va

appmaker中有一个表,我添加了复选框,如下所示:

我想从用户检查的实体获取电子邮件列表。此时,我甚至无法访问单个复选框的状态。这是我尝试添加到按钮的当前代码段:

console.log(widget.parent.parent.parent.children.Panel1.children.Table3Panel.children.Table3.children.Table3Body.children.Table3Row.children.UserSelectionCheckbox.value)

我得到一个错误:

无法读取未定义的属性“children”
在家中.Panel1.OuSelectPanel1.Button6.onClick:1:133


我能够使用自动填充来编写整个语句,为什么它找不到子对象?是否有任何方法可以直接引用此列表,而无需从小部件或应用程序根目录下的树

根据1:133,似乎是说Table3Row没有子对象。我想知道使用widget.root.subjections.Table3Row是否是针对特定表的另一种方式。

对于这种类型的功能,自动填充(intellisense)将不适用于您。当您试图从表中获取行集合时,需要以不同的方式处理子级。对于button onClick事件,我建议使用类似的代码:

var rows = widget.root.descendants.Table3Body.children._values;
var emails = [];
for (var i in rows) {
  var value = rows[i].children.Checkbox1.value;  
  if (value) {
    emails.push(rows[i].datasource.item.Email);
  }
}
console.log(emails);

再次强调,选择_值后,自动完成代码功能将无法工作,该值将返回表体的所有直接子项,这是您想要的。

这是一种我不知道存在的更快的方法,谢谢。我尝试了
console.log(widget.root.subjects.Table3Body.children.Table3Row.children.UserSelectionCheckbox.value)失败,出现类似的
无法在Home.Panel1.uselectpanel1.Button6.onClick:1:67
错误,无法读取未定义的属性“children”。默认情况下,该表也没有子项,但在单击此按钮之前会生成子项。您是否能够执行root.subjects.UserSelectionCheckbox.value操作?我认为root.subjects是页面上所有内容的非层次列表。我可以使用上面Markus的答案-我不知道一旦页面呈现,子体将如何显示。这非常有效,谢谢!你能帮我理解为什么自动填充显示的是不存在的东西吗?@IanHyzy代码在开发人员模式下工作,因为你的Table3Body.children.Table3Row实际上存在,因为Table3Body只有一个子项,即Table3Row。然而,在预览/部署中,您的Table3Body实际上有许多子项,这些子项实际上被命名为Table3Row$0、Table3Row$1,依此类推,以表示您有多少表行。这也是自动填充在寻址所有子行时停止工作的原因,因为自动填充不知道分配给每个表行的名称。